Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program lab;
- type
- list = ^node;
- node = record
- data: integer;
- next: list;
- end;
- var
- L, L1: list;
- E: integer;
- procedure createList(var L: list);
- var
- n,i: integer;
- t: list;
- begin
- writeln('Количество элементов в списке:');
- readln(n);
- writeln('Элементы списка:');
- t:= nil;
- for i:= 1 to n do
- begin
- new(L);
- L^.next:= t;
- readln(L^.data);
- t:= L;
- end;
- end;
- procedure printList(L: list);
- begin
- while L <> nil do
- begin
- write(L^.data, ' ');
- L:= L^.next;
- end;
- writeln;
- end;
- function invertList(l: list): list;
- var
- t: list;
- l1: list;
- begin
- t:= nil;
- while l <> nil do
- begin
- new(l1);
- l1^.next:= t;
- l1^.data:= l^.data;
- t:= l1;
- l:= l^.next;
- end;
- invertList:= l1;
- end;
- procedure deleteNextNode(var L: list);
- var
- t: list;
- begin
- t:= l^.next;
- l^.next:= t^.next;
- dispose(t);
- end;
- procedure onlyFirst(var L: list; E: integer);
- var
- h: list;
- begin
- h:= L;
- while (L <> nil) and (L^.data <> E) do
- L:= L^.next;
- while L^.next <> nil do
- begin
- if L^.next^.data = E then
- deleteNextNode(L);
- L:= L^.next;
- end;
- L:= h;
- end;
- procedure onlyLast(var L:list; E: integer);
- var
- h: list;
- n: integer;
- begin
- h:= L;
- n:= -1;
- while L <> nil do
- begin
- if L^.data = E then
- inc(n);
- L:= L^.next;
- end;
- L:= h;
- while (L^.next <> nil) and (n > 0) do
- begin
- if L^.next^.data = E then
- begin
- deleteNextNode(L);
- dec(n);
- end;
- L:= L^.next;
- end;
- L:= h;
- end;
- begin
- createList(L);
- writeln('Список:');
- printList(L);
- L1:= invertList(L);
- writeln('Инвертированный список:');
- printList(L1);
- L1:= invertList(L1);
- writeln('E:');
- readln(E);
- onlyFirst(L, E);
- writeln('Только первое включение:');
- printList(L);
- onlyLast(L1, E);
- writeln('Только последнее включение:');
- printList(L1);
- end.
Add Comment
Please, Sign In to add comment