题目:
建一个链表(栈链表),节点的值依次由键盘输入。要求任意输入一个数,把它从链表中删除,输出删除后的链表。
样例输入:
1 2 3 4 5 6
-1
3
样例输出:
1 2 4 5
6
解题思路:先把读入的数据变为一个线性链表,然后在这里面寻找要删除的数,进行删除,最后输出删除后的线性链表即可。
程序:
type
point=^node;
node=record
data:integer;
next:point;
end;
var
head:point;
x:integer;
procedure creat(var head:point);
var
i:integer;
p,q:point;
begin
head:=nil;
for i:=1
to 50 do
if i=1
then begin
new(q);
q^.data:=i;
p:=q;
head:=p;
end
else begin
new(q);
q^.data:=i;
p^.next:=q;
p:=q;
end;
p^.next:=nil;
end;
procedure delete(var
head:point;x:integer);
var
i:integer;
p,q:point;
begin
p:=head;
while
(p^.data<>x) and (p^.next<>nil) do
begin
q:=p;
p:=p^.next;
end;
if
p=head
then begin
head:=head^.next;
dispose(p);
end
else if p^.next=nil
then begin
q^.next:=nil;
dispose(p);
end
else begin
q^.next:=p^.next;
dispose(p);
end;
end;
procedure print(head:point);
var
p:point;
begin
p:=head;
while
p<>nil do
begin
write(p^.data,' ');
p:=p^.next;
end;
end;
begin
readln(x);
creat(head);
delete(head,x);
print(head);
end.