Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program QueueLinkGood;
- uses
- crt;
- type
- TpQueueElement = ^TQueueElement;
- TQueueElement = record
- info : integer;
- next : TpQueueElement;
- end;
- var
- pQueueFirst, pQueueLast : TpQueueElement;
- pTemp : ^TQueueElement;
- answer : char;
- element : integer;
- procedure push(pushMethodElement : integer);
- var
- pTemp : TpQueueElement;
- begin
- new(pTemp);
- pTemp^.info := pushMethodElement;
- pTemp^.next := pQueueLast;
- if (pTemp^.next = nil) then
- begin
- pQueueFirst := pTemp;
- end;
- pQueueLast := pTemp;
- end;
- procedure pop();
- var
- pTemp, pTemp2 : TpQueueElement;
- begin
- pTemp := pQueueFirst;
- if (pQueueLast <> pQueueFirst) then pTemp2 := pQueueLast^.next else pTemp2 := pQueueLast;
- while true do
- begin
- if ((pTemp = pTemp2^.next) or (pTemp2^.next = nil)) then break;
- pTemp2 := pTemp2^.next;
- end;
- if (pTemp = pTemp2) then
- begin
- pTemp2 := pQueueLast;
- end;
- if (pQueueFirst = pQueueLast) then
- begin
- pQueueFirst := nil;
- pQueueLast := nil;
- end else
- begin
- pQueueFirst := pTemp2;
- pTemp2^.next := nil;
- dispose(pTemp);
- end;
- end;
- procedure output();
- var
- pTemp : TpQueueElement;
- begin
- pTemp := pQueueLast;
- while (pTemp <> nil) do
- begin
- write(pTemp^.info, ' ');
- pTemp := pTemp^.next;
- end;
- end;
- begin
- pQueueFirst := nil;
- pQueueLast := nil;
- repeat
- writeln('1. Add element');
- writeln('2. Remove element');
- writeln('3. Output');
- textColor(4);
- writeln('4. Dispose');
- textColor(7);
- readln(answer);
- case answer of
- '1':
- begin
- write('Enter the new element to add: ');
- readln(element);
- push(element);
- end;
- '2':
- begin
- pop();
- writeln;
- end;
- '3':
- begin
- output();
- writeln;
- end;
- '4':
- begin
- dispose(pQueueLast);
- dispose(pQueueFirst);
- end;
- end;
- until (answer = 'n');
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement