Advertisement
Akaleaf

QueueLink

Nov 18th, 2018
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.98 KB | None | 0 0
  1. program QueueLinkGood;
  2.  
  3. uses
  4. crt;
  5.  
  6. type
  7.   TpQueueElement = ^TQueueElement;
  8.   TQueueElement = record
  9.     info : integer;
  10.     next : TpQueueElement;
  11.   end;
  12.  
  13. var
  14.   pQueueFirst, pQueueLast : TpQueueElement;
  15.   pTemp : ^TQueueElement;
  16.   answer : char;
  17.   element : integer;
  18.  
  19. procedure push(pushMethodElement : integer);
  20. var
  21.   pTemp : TpQueueElement;
  22. begin
  23.   new(pTemp);
  24.   pTemp^.info := pushMethodElement;
  25.   pTemp^.next := pQueueLast;
  26.   if (pTemp^.next = nil) then
  27.   begin
  28.   pQueueFirst := pTemp;
  29.   end;
  30.   pQueueLast := pTemp;
  31. end;
  32.  
  33. procedure pop();
  34. var
  35.   pTemp, pTemp2 : TpQueueElement;
  36. begin
  37.   pTemp := pQueueFirst;
  38.   if (pQueueLast <> pQueueFirst) then pTemp2 := pQueueLast^.next else pTemp2 := pQueueLast;
  39.   while true do
  40.   begin
  41.     if ((pTemp = pTemp2^.next) or (pTemp2^.next = nil)) then break;
  42.     pTemp2 := pTemp2^.next;
  43.   end;
  44.   if (pTemp = pTemp2) then
  45.   begin
  46.     pTemp2 := pQueueLast;
  47.   end;
  48.   if (pQueueFirst = pQueueLast) then
  49.   begin
  50.     pQueueFirst := nil;
  51.     pQueueLast := nil;
  52.   end else
  53.   begin
  54.     pQueueFirst := pTemp2;
  55.     pTemp2^.next := nil;
  56.     dispose(pTemp);
  57.   end;
  58. end;
  59.  
  60. procedure output();
  61. var
  62.   pTemp : TpQueueElement;
  63. begin
  64.   pTemp := pQueueLast;
  65.   while (pTemp <> nil) do
  66.   begin
  67.     write(pTemp^.info, ' ');
  68.     pTemp := pTemp^.next;
  69.   end;
  70. end;
  71.  
  72. begin
  73.   pQueueFirst := nil;
  74.   pQueueLast := nil;
  75.  
  76.   repeat
  77.     writeln('1. Add element');
  78.     writeln('2. Remove element');
  79.     writeln('3. Output');
  80.     textColor(4);
  81.     writeln('4. Dispose');
  82.     textColor(7);
  83.     readln(answer);
  84.     case answer of
  85.     '1':
  86.       begin
  87.         write('Enter the new element to add: ');
  88.         readln(element);
  89.         push(element);
  90.       end;
  91.     '2':
  92.       begin
  93.         pop();
  94.         writeln;
  95.       end;
  96.     '3':
  97.       begin
  98.         output();
  99.         writeln;
  100.       end;
  101.     '4':
  102.       begin
  103.         dispose(pQueueLast);
  104.         dispose(pQueueFirst);
  105.       end;
  106.     end;
  107.  
  108.   until (answer = 'n');
  109.  
  110. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement