Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program ListLinkOne;
- uses
- crt;
- type
- TpListElement = ^TListElement;
- TListElement = record
- info : integer;
- next : TpListElement;
- end;
- var
- pListFirst : TpListElement;
- pTemp : ^TListElement;
- answer : char;
- element, count : integer;
- listIsEmpty : boolean;
- procedure pushAfter();
- var
- pTemp, pTempPrev, pTempNext : TpListElement;
- element, afterElement : integer;
- begin
- new(pTemp);
- if (count = 0) then
- begin
- write('List is empty. Enter the first element: ');
- readln(element);
- pTemp^.info := element;
- count += 1;
- pListFirst := pTemp;
- end else
- begin
- write('Enter the element: ');
- readln(element);
- write('Enter the element AFTER which you want to add a new one: ');
- readln(afterElement);
- pTempPrev := pListFirst;
- while (pTempPrev^.info <> afterElement) do // 22 44 33
- begin
- pTempPrev := pTempPrev^.next;
- end;
- pTemp^.info := element;
- count += 1;
- pTempNext := pTempPrev^.next;
- pTempPrev^.next := pTemp;
- pTemp^.next := pTempNext;
- end;
- end;
- procedure pushBefore();
- var
- pTemp, pTempPrev, pTempNext : TpListElement;
- element, beforeElement : integer;
- begin
- new(pTemp);
- if (count = 0) then
- begin
- write('List is empty. Enter the first element: ');
- readln(element);
- pTemp^.info := element;
- count += 1;
- pListFirst := pTemp;
- end else
- begin
- write('Enter the element: ');
- readln(element);
- write('Enter the element BEFORE which you want to add a new one: ');
- readln(beforeElement);
- pTempPrev := pListFirst;
- while (pTempPrev^.info <> beforeElement) do // 22 44 55 33
- begin
- if (pTempPrev^.next^.info = beforeElement) then break;
- pTempPrev := pTempPrev^.next;
- end;
- pTemp^.info := element;
- count += 1;
- //pTemp^.next := pTempPrev^.next;
- if (pTempPrev^.info = beforeElement) then
- begin
- pListFirst := pTemp;
- pTemp^.next := pTempPrev;
- //pTempPrev^.next := pTemp;
- end else
- begin
- pTemp^.next := pTempPrev^.next;
- pTempPrev^.next := pTemp;
- end;
- end;
- end;
- procedure pop();
- var
- pTemp, pTempPrev, pTempNext : TpListElement;
- element : integer;
- begin
- if (count <> 0) then
- begin
- write('Enter the element to remove: ');
- readln(element);
- pTemp := pListFirst;
- while (pTemp^.info <> element) do
- begin
- if (pTemp^.next^.info = element) then break; // 22 44 33
- pTemp := pTemp^.next;
- end;
- if (pTemp^.info = element) then
- begin
- pListFirst := pTemp^.next
- end else
- begin
- pTemp^.next := pTemp^.next^.next;
- end;
- count -= 1;
- end else writeln('List is empty');
- end;
- procedure output;
- var
- pTemp : TpListElement;
- begin
- pTemp := pListFirst;
- while (pTemp <> nil) do
- begin
- write(pTemp^.info, ' ');
- pTemp := pTemp^.next;
- end;
- writeln;
- writeln('Count: ', count);
- end;
- begin
- count := 0;
- repeat
- writeln('1. Add element AFTER');
- writeln('2. Add element BEFORE');
- writeln('3. Remove element');
- writeln('4. Output');
- readln(answer);
- case answer of
- '1':
- begin
- pushAfter;
- end;
- '2':
- begin
- pushBefore;
- end;
- '3':
- begin
- pop;
- end;
- '4':
- begin
- output;
- end;
- end;
- until (answer = 'n');
- end.
Advertisement
Add Comment
Please, Sign In to add comment