(3)单链表的插入 在链表中插入一个元素的示意图如下: p->next 插入公 s->next 链表插入的核心语句 X结点的生成方式: Step 1 s->next=p->next; s=(node*)mal loc (m) Step 2 p->next=s s->data=; s->next= 思考:Step1和2能互换么?
11 在链表中插入一个元素X 的示意图如下: X s a b p 链表插入的核心语句: Step 1:s->next=p->next; Step 2:p->next=s ; p->next s->next 思考:Step1和2能互换么? X 结点的生成方式: s=(node*)malloc(m); s->data=X ; s->next= ? a b p 插 入 X (3) 单链表的插入
(4)单链表的删除 在链表中删除某元素b的示意图如下: p->next p->next)-next 删除动作的核心语句(要借助辅助指针变量q) q=p->next; //首先保存b的指针,靠它才能找到c; p->next=q->next;/将a、c两结点相连,淘汰b结点; free(q) /彻底释放b结点空间 思考:省略free(q语句行不行? 12
12 在链表中删除某元素b的示意图如下: a b c p 删除动作的核心语句(要借助辅助指针变量q): q = p->next; //首先保存b的指针,靠它才能找到c; p->next=q->next; //将a、c两结点相连,淘汰b结点; free(q) ; //彻底释放b结点空间 p->next 思考: 省略free(q)语句行不行? (p->next) -> next × × q (4) 单链表的删除