在C语言链表中,p=q->next和p->next=q->next有什么区别?

作者&投稿:承云 (若有异议请与网页底部的电邮联系)
c语言链表中p=q->next与q->next=p的区别~

p=q->next 使p指向q->next,p的值被改变,变为q->next
q->next=p 使p的值赋给q->next,q->next的值被改变,变为p
两者最后都指向同一地址,只是被改变的对象不同

p=q->next
使p指向q->next,p的值被改变,变为q->next
q->next=p
使p的值赋给q->next,q->next的值被改变,变为p
两者最后都指向同一地址,只是被改变的对象不同

给你普及下指针的真谛:
假设两个链表节点的内存地址分别为AAAA和BBBB,节点内偏移4字节处保存名为next的指针,
p = 0xAAAA,q=0xBBBB,这说明p和q分别指向这两个节点。
p->next是内存AAAE处的内容,q->next是内存BBBF处的内容(假设为CCCC)
那么, p = q->next 即p=0xCCCC
p->next = q->next,即将内存AAAE处的内容改为CCCC
两值意义相差甚远。

p=q—>next的意思是把p结点接到q结点后面,p—>next=q—>next的意思是把q结点的下一个结点接到p结点后。

我想了一个晚上,这是我的思考成果。




c语言链表p=q是不是等价于p.next=q?
不是,p=q意为q是当前节点,p.next=q意为q是p的下一个节点

C语言链表中的P!=NULL是不是指当指针P指到链表中的最后一个结点时结束...
是p指向最后一个节点的下一个节点循环才结束。因为最后一个节点 p不等于NULL,而最后一个节点的next为NULL,所以是最后一个节点的next。

初学C语言简单链表的问题,书上说p要指向head才能使用链表,我直接p=&a...
\/ void Print(struct student *head){ struct student *p;printf("\\nNow , These %d records are:\\n",n);p = head;if(head != NULL) \/*只要不是空链表,就输出链表中所有节点*\/ { printf("head is %o\\n", head); \/*输出头指针指向的地址*\/ do ...

链表的问题的: head为链表头指针,那么p=head中的p指向第几个元素,麻...
1,有头结点,那么表头指针应指向链表的头结点,根据数据结构的解释,头结点设在链表的第一个元素之前,头结点的数据域可以什么都不存或存储链表长度等附加信息,指针域存储指向第一个结点的指针,故此可以推出链表头指针指向头结点,同理p指向头结点。参考资料:数据结构(c语言版)纯手打,望采纳,谢谢...

C语言单链表中L->next = p 和 p = L->next的区别?
L->next = p L->next指向P指向的节点。p = L->next p指向L->next指向的节点。

求高手指出C语言单向链表的一个错误,万分感谢! 我不知道哪里错了._百 ...
是这两句的问题 p=l->next;p->next=NULL;P为NULL,p->next为无效的位置,为其赋值就出现了错误。

C语言单链表:p(原p)→next=q;p=q;是不是原p已经与q有链接了?最后执行p=...
是的,第一步操作后链表已经连接到q;后面赋值不会影响,这个一般是在往链表里增加元素这么操作,增加完p再指向末尾。

C语言链表
首先你需要理解s,p这两个指针的作用:s是一个临时结点指针,指向链表的最后一个节点,当要向链表中插入一个新节点时,插入到s指向的节点的后面就行了。p是一个新的结点指针,就是想要插入到新链表中的。p->data=k:是把p指针指向的节点的值赋值为k;s->next=p:是把新的节点插入到s指针指向的...

C语言中链表中的结构体指针变量问题。。。求教
定义结构体指针变量时,只分配存储指针类型需要的空间,比如ListNode *p;这里p有给他分配存储指针的4个字节的空间。实际上你是要让p指向一个结构体空间的,这个结构体空间在哪?可以先定义ListNode a;然后 p=&a;这时p指向一个之前申请分配过空间(编译器设定过其地址和大小,在栈空间存放着了)。现在...

C语言结构体与链表问题【急】【急】【急】【急】【急】【急】【急...
首先回答第一个问题,程序当中存在以下这几个问题:(1) char name[ ]中的数组name没有指定大小,此处可以定义为name[20](2) p = stu也有错误,应该将结构体的首地址赋给指针p,从而使p指向该结构体。正确的写法是:p = &stu;(3) (*p).name = "Mary"也有错误,此处不能这么赋值。正确的...

上蔡县17746261762: c语言链表中p=q - >next与q - >next=p的区别 -
宜鬼先舒: p=q->next 使p指向q->next,p的值被改变,变为q->next q->next=p 使p的值赋给q->next,q->next的值被改变,变为p 两者最后都指向同一地址,只是被改变的对象不同

上蔡县17746261762: C语言链表中q - >next=p;表示什么意思? -
宜鬼先舒: q->next = p; 表示将节点p加入到节点q之后.意思:使当前指针指向链表的下一个结点.一般作用在数据结构中的单链表里由应用,语句中的p一般指向一个结构体类型的数据,此类型的数据通常表示节点;结构体里存放的一些数据和记录下一...

上蔡县17746261762: 本人刚学C,遇到一个有关链表的问题.请大虾解释一下以下代码中 p=q 的作用. -
宜鬼先舒: p=q的作用是让p指向这个链表的最后一个结点,这样每增加一个结点q时,p->next=q就可以将q加到链表的结尾.

上蔡县17746261762: c语言链表p=q是不是等价于p.next=q? -
宜鬼先舒: 不是,p=q意为q是当前节点,p.next=q意为q是p的下一个节点

上蔡县17746261762: c语言链表 删除相同的元素值
宜鬼先舒: 你只是对相邻的元素进行比较,所以只能删除相邻且相同的元素.如果按照你的思想,则要先经排序后的链表,再执行Puge(L)才能删除链表中所有的相同的元素. 以下是我写的一个链表排序(冒泡法): /*单链表排序(mark=1,降序;mark=0...

上蔡县17746261762: C语言链表输出 -
宜鬼先舒: 1.我看这个链表应该是带头的链表,所以for循环前的p=q->next;应该改成p=q; 2.链表不是数组,楼主好像没有完全理解链表. 在你的代码基础上改下: for(i=0;i{ printf("%d\t%d\t",p->num,p->age);// p=p->next;//用这个来实现查找下一个 } 不过一般情况下不知道链表的长度,可以按照下面方式遍历 while(p) { printf("%d\t%d\t",p->num,p->age);// p=p->next; } 3.没有释放空间的语句,可以借鉴上述遍历的方式.

上蔡县17746261762: C语言的链表如何理解? -
宜鬼先舒: 新手吧~ 大概是你用自然语言的理解方式来理解赋值了.=号在编程过程中表示的是赋值,也就是说,你写p=q的时候,就把q的值给了p,而p和q都是指针时,这句话的意思就变成了:p指向的地址变成了q指向的地址.也就是说,比如本来你的纸上有一个q指向后面的箭头,p也有一个,现在你做的工作就是把p的那个箭头擦掉,把p的箭头指向q的箭头指向的那个位置.再试试,如果还是不明白,继续追问~

上蔡县17746261762: 在C语言链表中 q - >next=p; q=p;是什么意思?是不是q=p后q节点就消失了? -
宜鬼先舒: q->next = p;的意思是将p存放入q所指向的结点的指针域 q = p;q就指向了p所指的 q=p赋值语句后,q所指向的结点还是存在的,没有q结点这一说法

上蔡县17746261762: C语言中链表中代码什么意思?请大侠解释,谢谢!!! -
宜鬼先舒: 1. for(p=head->next;p->next;p=p->next) 意思是该链表的下一个结构不为空,执行循环,执行循环后,再判定下下个结构是否为空,一直循环整个表2. 该程序是根据结构中 data只从小到大排序,开始表头和其后面所有结构data的比较,在第二个和他后面所有结构data的比较,如此循环...

上蔡县17746261762: C语言中有关顺序建立链表的疑问? -
宜鬼先舒: 首先,这段代码是C++程序,当然了,并没有直接用到太多C++特性,只是使用了cin、cout之类的对象来简化数据的输入输出.cin>>n;等效于C语言的scanf("%d", cin>...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网