2-12在一个单链表head中,若要在指针p所指结点后插入一个q指针所指结点,则执行()?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2-12在一个单链表head中,若要在指针p所指结点后插入一个q指针所指结点,则执行()?相关的知识,希望对你有一定的参考价值。

PTA里C语言题目,求求大家帮帮忙,我实在不会了,拜托

在一个单链表head中,若要在指针p所指结点后插入一个q指针所指结点,则执行q->next=>next;p->next=q;

单链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) +指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。

扩展资料:

单链表特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始。 通过指针连接起来,但是只能单向遍历的内存块。由于它是单向的,或者说不可逆的,所以我们可以把它比作我们的人生:小学->中学->大学->工作->养老。

链表是一种重要的数据结构,该结构由节点组成。每个节点包含两部分数据,第一部分是节点本身的数据,第二部分是指向下一个节点的指针。对于单向链表,链表中存在两个特殊的节点,分别为“头节点”和“尾节点”。头节点本身没有数据,只存储下一个节点的指针,尾节点只存储数据。

参考技术A

首先,p指向节点的next指针不能丢,应当复制到q指向的节点的next,因此B和D是对的,另外两个选择将会使这个指针丢失

p节点后面是q指向节点,因此p节点的next(现在可以被冲掉了)需要赋值为q,因此选D,像B去改变p并不能实现修改链表内部指针,因此是不行的

参考技术B 答案D
q->next = p->next; //让q指向p所指向的下一个节点,即解开p与其下一个节点的链,同时把q挂上
p->next = q; //让q成为p的下一个节点,即合上拆开的链
参考技术C 选D,把p的当前后继节点链接到q的后继节点。q再变成p的后继节点。就可以在插入节点后保持正确的链接关系。 参考技术D

答案就是选择D

追问

为什么呢

追答

比如链表是这样的 head-->p-->NULL

    head->next = p

    p->next = NULL

执行q->next = p->next后,有

    head->next = p

    p->next = NULL

    q->next = NULL

执行p->next = q,有

    head->next = p

    p->next = NULL(变成下面的4)

    q->next = NULL

    p->next = q

综合上述 1,4,3,链表为head-->p-->q-->NULL

本回答被提问者采纳

7. 在一个不含头结点的单链表HL中,若要向表头插入一个由指针p指向的结点,则执行 。

7. 在一个不含头结点的单链表HL中,若要向表头插入一个由指针p指向的结点,则执行 。
A. HL=p; p->next=HL;
B. p->next=HL; HL=p;
C. p->next=HL; p=HL;
D. p->next=HL->next; HL->next=p;

参考技术A B

新结点的next指向头结点
头结点指向p追问

能解释下吗?

追答

HL->节点2->节点3->节点4->null

HL->p->节点2->节点3->节点4->null
这样清楚了吧

追问

谢谢哦

追答

HL(节点1)->节点2->节点3->节点4->null

p->(节点1)->节点2->节点3->节点4->null

然后HL指向p
HL(p的新节点)->原节点1->原节点2->原节点3->原节点4->null

这样清楚了吧

参考技术B 选择最后一个答案D,我们刚做过的复习题

以上是关于2-12在一个单链表head中,若要在指针p所指结点后插入一个q指针所指结点,则执行()?的主要内容,如果未能解决你的问题,请参考以下文章

无头结点单链表 在头指针处插入元素

已知L是一个不带表头的单链表, 在表首插入结点*p的操作是( )。

单链表

数据结构复习总结

数据结构复习总结

数据结构复习总结