Advertisement
Guest User

Untitled

a guest
Dec 17th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.81 KB | None | 0 0
  1. Program Graph;
  2. { создание и распечатка графа }
  3. Uses Crt;
  4. Type
  5. ukaz=^uzel;
  6. point=^duga;
  7. uzel=record { список вершин графа }
  8. Nom: integer;
  9. Next: ukaz;
  10. Sv: point
  11. end;
  12. duga=record { структура дуги графа }
  13. Next: point;
  14. Sv: ukaz
  15. end;
  16. Var
  17. A, B: integer;
  18. L: boolean;
  19. Top, Kon, Ua, Ub: ukaz;
  20. P, Q: point;
  21. Ch: char;
  22. Begin
  23. L:=True; Top:=Nil;
  24. While L do
  25. Begin
  26. Write('Введите связи в виде пары вершин (-1 -конец) ');
  27. Read(A);
  28. if A=-1 then
  29. begin
  30. WriteLn('Ввод закончен !');
  31. WriteLn;
  32. L:=False
  33. end
  34. else
  35. begin
  36. Read(B);
  37. Kon:=Top;
  38. Ua:=Nil; Ub:=Nil;
  39. While Kon<>Nil do
  40. begin
  41. if Kon^.Nom=A then Ua:=Kon;
  42. if Kon^.Nom=B then Ub:=Kon;
  43. if (Ua<>Nil) and (Ub<>Nil) then Kon:=Nil;
  44. if Kon<>Nil then Kon:=Kon^.Next
  45. end;
  46. if Ua=Nil then { A-новая вершина }
  47. begin
  48. New(ua);
  49. Ua^.Nom:=A;
  50. Ua^.Next:=Top;
  51. Top:=Ua;
  52. Ua^.Sv:=Nil
  53. end;
  54. if Ub=Nil then { B-новая вершина }
  55. begin
  56. New(Ub);
  57. Ub^.Nom:=B;
  58. Ub^.Next:=Top;
  59. Top:=Ub;
  60. Ub^.Sv:=Nil
  61. end;
  62.  
  63. 31
  64.  
  65. if Ua^.Sv=Nil then { нет дуг у вершины A }
  66. begin
  67. New(p);
  68. Ua^.Sv:=P;
  69. P^.Next:=Nil;
  70. P^.Sv:=Ub
  71. end
  72. else { есть дуги }
  73. begin
  74. Q:=Ua^.Sv; { первая дуга }
  75. New(p);
  76. P^.Next:=Q^.Next;
  77. Q^.Next:=P;
  78. P^.Sv:=Ub { вставка после первой дуги }
  79. end
  80. end
  81. end; { конец While }
  82. Ua:=Top;
  83. While Ua<>Nil do
  84. begin
  85. WriteLn('Вершина ', Ua^.Nom);
  86. P:=Ua^.Sv;
  87. if P<>Nil then Write('Последователи: ')
  88. else Write('Последователей нет !');
  89. While P<>Nil do
  90. begin
  91. Kon:=P^.Sv;
  92. B:=Kon^.Nom;
  93. Write(B,' ');
  94. P:=P^.Next
  95. end;
  96. WriteLn;
  97. Ua:=Ua^.Next
  98. end;
  99. Ch:=ReadKey { пауза }
  100. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement