删除链表中重复的节点的Pascal问题,怎么解决

数据结构题库,数据结构,数据结构题集,数据结构试题及答案,数据结构试题库,数据结构编程题库,数据结构与算法,5a0题库,裁决,龙战骑士

单链表设一个“哨兵”intlistt ,其值域volue为空,后继指针域next指向单链表的第一个结点。从“哨兵”出发,沿着各结点的next指针,可顺序访问单链表的每一个结点,输出升序的整数序列。初始时,我们通过下述命令构造一个空表:

然后依次读入正整数,按照递增顺序将这些整数插入单链表中。问题是,对于一个整数x来说,如何找到插入位置,如何将整数插入该位置:

首先,我们为整数x创设一个结点p:

并从“哨兵” intlist出发,顺着各结点的next指针寻找结点v。按照递增要求,如果p结点插入u结点后,则

设v=u^.next,u和v分别为p的前趋结点和后继结点。我们将u^.next指针调整为p,p的next指针指向v,便可将p结点插入单链表。

构造单链表的过程一直进行到输入负数为止。

删除序列中整数x的计算亦是从从“哨兵” intlist出发,顺着各结点的next指针寻找值域为x的结点。为了删除这个结点,必须找到它的前趋结点u,即u^.next^.volue=x。我们将u的next指针修正为指向后继结点的后继结点,即

便可将值域为x的结点从单链表中删去

我要回帖

更多关于 删除链表中重复的节点 的文章

 

随机推荐