C语言链表中q->next=p;表示什么意思? 在C语言链表中 q->next=p; q=p;是什么意思?是...

作者&投稿:佘泻 (若有异议请与网页底部的电邮联系)

q->next = p; 表示将节点p加入到节点q之后。

意思:使当前指针指向链表的下一个结点。

一般作用在数据结构中的单链表里由应用,语句中的p一般指向一个结构体类型的数据,此类型的数据通常表示节点;结构体里存放的一些数据和记录下一个节点地址的指针变量next;这个next就好比链条一样,连接着一个个节点。

->是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么要用指针取出结构体中的数据,就要用到“->”.

扩展资料

链表的特点:

1、n个节点离散分配

2、每一个节点之间通过指针相连

3、每一个节点有一个前驱节点和一个后继节点

4、首节点没有前驱节点,尾节点没有后继节点

创建链表前须知

首节点:存放第一个有效数据的节点。

头节点:在单链表的第一个结点之前附设一个结点,它没有直接前驱,称之为头结点,头结点的数据域可以不存储任何信息,指针域指向第一个节点(首节点)的地址。头结点的作用是使所有链表(包括空表)的头指针非空。

头指针:指向头节点的指针。

尾节点:存放最后一个有效数据的节点。

尾指针:指向尾节点的指针。

参考资料来源:

百度百科——链表



q->next = p;  表示将节点p加入到节点q之后。

具体的意思可以参考如下的图形表示:

节点q----->节点p


一般链表的节点定义为:

struct node
{
    int data;   // 数据域
    struct node *next;  // 指针域
};


q-.next=p;
把p的地址赋给q的下一个地址
while (q)
{r=q->next;
q->next=p;
p=q;
q=r; }
把q的下一个地址赋给r;
p的地址赋给q的下一个地址;
q的地址赋给p的地址
r的地址赋给q;
直到q->next的地址为0就结束循环
其实链表要自己多画画就直到怎么回事了

把p(是指针,表示地址)赋给q的地址域。

前面没有说明r ,p,q是指向什么的指针啊,后面就难猜了

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

给你普及下指针的真谛:
假设两个链表节点的内存地址分别为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
两值意义相差甚远。

q->next = p;的意思是将p存放入q所指向的结点的指针域

q = p;q就指向了p所指的
q=p赋值语句后,q所指向的结点还是存在的,没有q结点这一说法

c语言链表问题
答:include<iostream.h>main(){//声明变量 int i,j; float t,a[5]; //从键盘上为数组赋值 for (i=0;i<=4;i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } //对数组按从...

C语言链表中可以将各个结点中的值集合成数组吗 p=head; ib[n++]=...
答:可以,就是遍历链表,把需要的数据取出来,为什么不可以

C语言链表的使用方法
答:q->link=0;//新结点的指针域置0 if(h==0)h=q;//第一个结点作为链头结点 else p->link=q;//新结点添加到链表的末尾 p=q;} return h;//返回链头指针 } void print(node*h)//链表输出函数的定义 { while...

C语言链表?
答:p=(S*)malloc(LEN); //动态分配空间,新的节点 scanf ("%d%s%f",&p->num,p->name,&p->pay); //依次输入结构的 num name pay q->next=p; //确定下一个元素指针,再次读入 q=p; //指向新的...

C语言链表问题 输出只出现第一个节点 没后面的 求大神指教
答:struct student { int num;char name[20];int score;struct student *next;};int n=0;struct student *creat(void) //建立链表的函数 返回首地址、、// { struct student *q,*w;structstudent *head;q=w=(...

c语言链表节点交换问题 帮忙找我的问题
答:q=head->next,p->next=q->next,head=q,q->next=p; } else if(i!=4&&i!=0) /*这里的i!=0可以不要判断*/ { p=head; for(j=0; j<i+i; j++) { z=p;...

C语言链表问题 为什么我要输入5个数据却只输入到了4个 输第一个数据...
答:getchar();gets(q->a);5 第1个人名字aaaaa 第2个人名字bbbbb 第3个人名字ccccc 第4个人名字ddddd 第5个人名字eeeee head->aaaaa->bbbb->cccc->dddd->eeee->end Press any key to continue include<stdio.h> includ...

这段C语言链表什么意思?
答:1. '\0'是表示后面没有结点了,本结点就是最后一个结点。在后面输出的时候,就是根据这个判断时候输出完毕,如果没写,那么就会多输出一个。2. ptr=tail,这个是说,指针tail的值给了指针ptr,那么ptr就指向了tail指向...

关于C语言链表的问题,一个排序的问题,按num排序,求大佬帮助,在线等...
答:你的代码似乎不能完成链表排序。给你写一个选择法排序的供参考——include "stdio.h"#include <string.h>struct student{//结构体数据域char name[10];double score;char num[10];};struct node{//结构体的结构体...

...比如在单链表中我可不可以这样写:free(q);q
答:free(q); 释放q指针所拥有的资源,告诉系统,本程序不再使用该内存地址(free的功能就是这个)q=q->next; 然后继续引用该地址,则程序可能会死掉!