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 答案Dq->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;
新结点的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
这样清楚了吧
以上是关于2-12在一个单链表head中,若要在指针p所指结点后插入一个q指针所指结点,则执行()?的主要内容,如果未能解决你的问题,请参考以下文章