为了账号安全,请及时绑定邮箱和手机立即绑定

C++编程中,pNode = pNode->pNext;是什么意思?

C++编程中,pNode = pNode->pNext;是什么意思?

四季花海 2019-05-23 21:15:40
C++编程中,pNode = pNode->pNext;是什么意思

3 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

这个估计是pNode是个结构体,然后比如struct _Node{ ...... struct _Node * next;}Node;所以pNode = pNode->pNext是把pNode这个指针指向他的下一个元素。这个就相当于一个铁链,一个咬一个,然后通过这个,可以知道他的下一个是什么。

查看完整回答
反对 回复 2019-05-26
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

12345struct Node{    int a;    struct Node *next;};

链表中一般都有头结点,就是head,其中可以存放数据,也可以不存放数据。在动态建立链表的过程中,肯定需要定义一个新的结点,比如pNext。

1pNext=(struct Node *)malloc(sizeof(struct Node));

这时候应该将头结点head的next域指向该新的结点。但是head一般不移动,因为移动后就找不到头结点了。所以定义一个指针p,p在开始时指向头结点,就是

1p=pHead;

建立完新的结点后,p的next域指向该新结点。由于下一次还要建立新节点,所以p要再指向现在已经建立好的新结点。这样下一次建立新的结点时才能正确指向该节点。不知道表达的好不好,把源程序复制在下面吧,应该看一下程序就懂了。

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162#include<stdio.h>#include<stdlib.h> struct Node{    int a;    struct Node *next;}; struct Node *create_list();void display_list(struct Node *p); int main(){    struct Node *pHead;     pHead=create_list();    display_list(pHead);    return 0;} struct Node *create_list(){    struct Node *pHead=(struct Node *)malloc(sizeof(struct Node));    struct Node *pNext;    struct Node *p;         int i;    int len;    int value;     p=pHead;    p->next=NULL;     printf("请输入链表的节点个数:\n");    scanf("%d",&len);     for(i=0;i<len;i++)    {        pNext=(struct Node *)malloc(sizeof(struct Node));         printf("请输入第%d个节点的数据:\n",i+1);        scanf("%d",&value);        pNext->a=value;        pNext->next=NULL;         p->next=pNext;        p=pNext;    }    return pHead;} void display_list(struct Node *p){    int i=1;    p=p->next;    for(p;p!=NULL;p=p->next)    {        printf("第%d个节点的数据为:%d\n",i,p->a);        i++;    }}

程序没有错误的,可以运行,可以看一下create_list()函数,是建立链表,包含你想知道的问题,建立链表是一个循环结构。把运行结果也复制一下



查看完整回答
反对 回复 2019-05-26
  • 3 回答
  • 0 关注
  • 4638 浏览

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号