Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program List;
- {$APPTYPE CONSOLE}
- {$R *.res}
- uses
- System.SysUtils;
- type
- PElement = ^TElement;
- TElement = record
- Data: integer;
- Next: PElement;
- end;
- var
- First: PElement;
- Size: integer;
- I: integer;
- Temp: integer;
- procedure Push(data: integer);
- var
- Current: PElement;
- Temp: PElement;
- begin
- if First = nil then
- begin
- new(First);
- First^.Data := data;
- First^.Next := nil;
- exit;
- end;
- Current := First;
- while Current^.Next <> nil do Current := Current^.Next;
- Temp := Current;
- new(Current);
- Current^.Data := data;
- Current^.Next := nil;
- Temp^.Next := Current;
- end;
- procedure Print();
- var
- Current: PElement;
- begin
- Current := First;
- while Current <> nil do
- begin
- write(Current^.Data, ' ');
- Current := Current^.Next;
- end;
- writeln;
- end;
- procedure InsertAfter(index: integer; data: integer);
- var
- Current, Temp: PElement;
- I: integer;
- begin
- if First = nil then
- begin
- writeln('Lista jest pusta. Nie mozna wstawic elementu');
- exit;
- end;
- Current := First;
- for I := 1 to index do
- begin
- if Current = nil then
- begin
- writeln('Indeks jest za duzy. Nie mozna wstawic elementu.');
- exit;
- end;
- Current := Current^.Next;
- end;
- new(Temp);
- Temp^.Data := data;
- Temp^.Next := Current^.Next;
- Current^.Next := Temp;
- end;
- procedure DeleteAfter(index: integer);
- var
- Current, Temp: PElement;
- I : integer;
- begin
- if First = nil then
- begin
- writeln('Lista jest pusta. Nie mozna usunac elementu');
- exit;
- end;
- Current := First;
- for I := 1 to index do
- begin
- if Current = nil then
- begin
- writeln('Indeks jest za duzy. Nie mozna usunac elementu.');
- exit;
- end;
- Current := Current^.Next;
- end;
- if Current^.Next = nil then
- begin
- writeln('Element jeszcze nie zostal dodany. Nie mozna usunac elementu.');
- exit;
- end;
- Temp := Current^.Next^.Next;
- dispose(Current^.Next);
- Current^.Next := Temp;
- end;
- function Find(data: integer): PElement;
- var
- Current: PElement;
- begin
- Current := First;
- while Current <> nil do
- begin
- if Current^.Data = data then
- begin
- Result := Current;
- exit;
- end;
- Current := Current^.Next;
- end;
- Result := nil;
- end;
- begin
- write('Ilosc elementow: ');
- readln(Size);
- for I := 0 to size - 1 do
- begin
- write('a[', I, '] = ');
- readln(Temp);
- Push(Temp);
- end;
- InsertAfter(0, 10);
- Print();
- DeleteAfter(0);
- Print();
- readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement