Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program huh;
- type
- PNode = ^TNode;
- TNode = record
- value: integer;
- next: PNode;
- end;
- var
- head: PNode;
- input: string;
- pusharr: array of string;
- procedure printStack(p: PNode);
- begin
- while p <> nil do
- begin
- write(p^.value);
- write(' -> ');
- p := p^.next;
- end;
- writeln('nil');
- end;
- procedure push(var p: PNode; val: integer);
- var
- newE: PNode;
- begin
- new(NewE);
- newE^.value := val;
- newE^.next := p;
- p := newE;
- writeln('ok');
- end;
- function size(p: PNode): integer;
- begin
- size := 0;
- while p <> nil do
- begin
- size += 1;
- p := p^.next;
- end;
- end;
- procedure pop(var p: PNode);
- var
- temp: PNode;
- begin
- if size(p) > 0 then begin
- writeln(p^.value);
- temp := p;
- p := p^.next;
- dispose(temp);
- end else writeln('error');
- end;
- procedure back(p: PNode);
- begin
- if size(p) > 0 then writeln(p^.value)
- else writeln('error');
- end;
- procedure clear(var p: PNode);
- begin
- while p <> nil do
- begin
- p := p^.next;
- end;
- writeln('ok');
- end;
- begin
- head := nil;
- while input <> 'exit' do
- begin
- readln(input);
- case input of
- 'back':
- back(head);
- 'size':
- writeln(size(head));
- 'exit':
- writeln('bye');
- 'clear':
- clear(head);
- 'pop':
- pop(head);
- else begin
- pusharr := input.Split(' ');
- push(head, pusharr[1].ToInteger);
- end;
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement