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

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


四季花海
浏览 4639回答 3
3回答

慕少森

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

红糖糍粑

12345struct&nbsp;Node{&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;a;&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;Node&nbsp;*next;};链表中一般都有头结点,就是head,其中可以存放数据,也可以不存放数据。在动态建立链表的过程中,肯定需要定义一个新的结点,比如pNext。1pNext=(struct&nbsp;Node&nbsp;*)malloc(sizeof(struct&nbsp;Node));这时候应该将头结点head的next域指向该新的结点。但是head一般不移动,因为移动后就找不到头结点了。所以定义一个指针p,p在开始时指向头结点,就是1p=pHead;建立完新的结点后,p的next域指向该新结点。由于下一次还要建立新节点,所以p要再指向现在已经建立好的新结点。这样下一次建立新的结点时才能正确指向该节点。不知道表达的好不好,把源程序复制在下面吧,应该看一下程序就懂了。1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162#include<stdio.h>#include<stdlib.h>&nbsp;struct&nbsp;Node{&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;a;&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;Node&nbsp;*next;};&nbsp;struct&nbsp;Node&nbsp;*create_list();void&nbsp;display_list(struct&nbsp;Node&nbsp;*p);&nbsp;int&nbsp;main(){&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;Node&nbsp;*pHead;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pHead=create_list();&nbsp;&nbsp;&nbsp;&nbsp;display_list(pHead);&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}&nbsp;struct&nbsp;Node&nbsp;*create_list(){&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;Node&nbsp;*pHead=(struct&nbsp;Node&nbsp;*)malloc(sizeof(struct&nbsp;Node));&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;Node&nbsp;*pNext;&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;Node&nbsp;*p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;len;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;value;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p=pHead;&nbsp;&nbsp;&nbsp;&nbsp;p->next=NULL;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("请输入链表的节点个数:\n");&nbsp;&nbsp;&nbsp;&nbsp;scanf("%d",&len);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i<len;i++)&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pNext=(struct&nbsp;Node&nbsp;*)malloc(sizeof(struct&nbsp;Node));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("请输入第%d个节点的数据:\n",i+1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf("%d",&value);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pNext->a=value;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pNext->next=NULL;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p->next=pNext;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p=pNext;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;pHead;}&nbsp;void&nbsp;display_list(struct&nbsp;Node&nbsp;*p){&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i=1;&nbsp;&nbsp;&nbsp;&nbsp;p=p->next;&nbsp;&nbsp;&nbsp;&nbsp;for(p;p!=NULL;p=p->next)&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("第%d个节点的数据为:%d\n",i,p->a);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;&nbsp;&nbsp;&nbsp;&nbsp;}}程序没有错误的,可以运行,可以看一下create_list()函数,是建立链表,包含你想知道的问题,建立链表是一个循环结构。把运行结果也复制一下
打开App,查看更多内容
随时随地看视频慕课网APP