数据结构
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下
——老子
1
每日一练
1.
一个无头结点的线性链表(不循环)有两个域。数据域 data,指针域 next,链首 head,下面算法用read(num)读入数据,当 num 小于 0 时,输入结束。建立一个数据以递增序组成的链表。
PROC insert( head, x);
{在链首为 head 的表中按递增序插入 x}
new(r);r^.data:=x;
IF head=NIL
THEN[ head:=(1) _____; r^.next:= (2)________ ]
ELSE IF (3)___ THEN [r^ .next:=head; head:=r]
ELSE [p:=head;
WHILE (4)___ AND (p^.next≠NIL ) DO[q:=p; (5)___ ];
IF (6)___ THEN [ q^ .next:=(7)___; r^.next:= (8)____; ]
ELSE [p^.next:=(9)____; r^.next:= (10)___; ]
]
ENDP;
PROC creat(head);
head:= (11)______; read(num);
WHILE num>0 DO
[ insert(head,num); read(num) ]
ENDP;
2.下面程序段是逆转单向循环链表的方法,p 0 是原链表头指针,逆转后链表头指针仍为 p 0 。
(可以根据需要增加标识符)
p:= p 0 ; q 0 :=NIL;
WHILE (1)________ DO
BEGIN (2)________; (3)________;(4)______;(5)________ END;
p^.next:= q 0 ; p 0 ^.next:=p; p 0 :=p;
正确答案
1.
(1)r
(2)NIL
(3)x<head^.data
(4)p^.data<x
(5)p:=p^.next
(6)p^.data>=x;
(7)r
(8)p
(9)r
(10)NIL
(11)NIL
2.
(1)p^.next<>p 0
(2)r:= p^.next
(3) p^.next:= q 0 ;
(4) q 0 := p;
(5) p:=r
如果您觉得本篇文章对您有作用,请转发给更多的人,点一下好看就是对小编的最大支持!
-end-
你学习了么?
文 | 闫小林