数据结构 | 每日一练(31)

数据结构

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下

——老子

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-

你学习了么?

文 | 闫小林

正文完