【文件属性】:
文件名称:其他操作-复高斯分布的数学基础理论
文件大小:6.48MB
文件格式:PDF
更新时间:2021-06-08 13:20:37
嵌入式 Linux C
图 8.4 链表的删除过程
同样,链表中元素的指针会依次有以下变化。
� A→next 变为 C,描述语言为:A→next = A→next→next。
以下是链表中元素插入的函数,希望读者能够仿照此例,写出链表的删除代码。
int ListInsert(LinkList L,int i,ElemType e)
{
/*L 为带头节点的单链表的头指针*/
/*i 为要插入的元素位置,e 为要插入的元素*/
LinkList p,s;
int j;
/*初始化,把 p 指向链表头指针,插入元素可能在链表头*/
p=L;j=0;
/*找到第 i 位*/
while(p&&j
next;
++j;
}
if(!p||j>i-1) return 0;
/*初始化链表节点*/
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
/*将 s 插入链表,并修改原先的指针*/
s->next=p->next;
p->next=s;
return 1;
}/*ListInsert Before i */
注意 修改链表指针的两句语句的顺序不能颠倒,否则程序会有错误。
(4)其他操作
将几个单链表合并也是链表操作中的一个常见的操作之一,下面将两个单链表根据学生
的姓名次序合并成一个单链表。
在合并的过程中,程序中实际是新建了一个链表,然后将两个链表的元素依次插入到新
的链表中。如果其中一个链表的元素已经全部插入,则另一个链表的剩余操作只需顺序将剩
余元素插入即可。
该过程如图 8.5 所示: