作业帮 > 综合 > 作业

L为无表头结点的单链表,p既不是首元结点也不是表尾结点,在p结点前插入s结点.

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/06/06 03:42:17
L为无表头结点的单链表,p既不是首元结点也不是表尾结点,在p结点前插入s结点.
q=p;
p=L
;while(p->next!=q)p=p->next;
s->next=p->next;
p->next=s;
我怎么看这是在p结点后面插入s啊,小弟不解,求指教.
L为无表头结点的单链表,p既不是首元结点也不是表尾结点,在p结点前插入s结点.
你好,如果下面这段代码去掉
q=p;
p=L
;while(p->next!=q)p=p->next;
那么
s->next=p->next;
p->next=s;
就是在结点p后面插入s,这个应该好理解吧.
那么前面的那段代码是什么作用呢?
q=p;//用临时指针q指向结点p
p=L;然后让指针p指向链表头
while(p->next!=q)p=p->next;//查找结点q的前驱结点,
//while循环退出条件是p->next == q,即p此时指向q的前驱结点(实际就是原来的节点p的前驱)
现在应该懂了吧~
希望对你有帮助,不懂可追问~