首页 理论教育 在C语言程序设计中,使用链表插入结点的方法

在C语言程序设计中,使用链表插入结点的方法

时间:2023-11-23 理论教育 版权反馈
【摘要】:若要在一个链表的指定位置插入结点,则要求链表本身必须是已按某种规律排好序的。例如,在学生数据链表中,要求按学号顺序插入一个结点。这种情况下使原表末结点指针域指向被插结点,被插结点指针域置为NULL。即以下为链表插入函数的实现。本函数有两个形参均为指针变量,其中head指向链表,pi 指向被插结点。本函数返回一个指针,是链表的头指针。

在C语言程序设计中,使用链表插入结点的方法

【例10.8】写一个函数,在链表中指定位置插入一个结点。若要在一个链表的指定位置插入结点,则要求链表本身必须是已按某种规律排好序的。例如,在学生数据链表中,要求按学号顺序插入一个结点。设被插结点的指针为pi,后一结点的指针为pb,前一结点的指针为pf。可在以下四种不同情况下插入。

(1)原表是空表,只需使head指向被插结点即可。

(2)被插结点值最小,应插入第一结点之前。这种情况下使head指向被插结点,被插结点的指针域指向原来的第一结点即可。即

(3)在其他位置插入。这种情况下使插入位置的前一结点的指针域指向被插结点,使被插结点的指针域指向插入位置的后一结点。即(www.xing528.com)

(4)在表末插入。这种情况下使原表末结点指针域指向被插结点,被插结点指针域置为NULL。即

以下为链表插入函数的实现。其中TYPE为定义好的结构体,head为链表的头指针。

本函数有两个形参均为指针变量,其中head指向链表,pi 指向被插结点。函数中首先判断链表是否为空,为空则使head指向被插结点。表若不空,则用while语句循环查找插入位置。找到之后再判断是否在第一结点之前插入,若是,则使head 指向被插结点,而被插结点指针域指向原第一结点,否则在其他位置插入。若插入的结点大于表中所有结点,则在表末插入。本函数返回一个指针,是链表的头指针。当插入的位置在第一个结点之前时,插入的新结点成为链表的第一个结点,因此head的值也有了改变,故需要把这个指针返回主调函数。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈