前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据结构 | 每日一练(31)

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

作者头像
小林C语言
发布2019-06-10 22:38:05
2890
发布2019-06-10 22:38:05
举报
文章被收录于专栏:C语言入门到精通

数据结构

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

——老子

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-

你学习了么?

文 | 闫小林

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档