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

慕少森
TA贡献2019条经验 获得超9个赞
这个估计是pNode是个结构体,然后比如struct _Node{ ...... struct _Node * next;}Node;所以pNode = pNode->pNext是把pNode这个指针指向他的下一个元素。这个就相当于一个铁链,一个咬一个,然后通过这个,可以知道他的下一个是什么。

红糖糍粑
TA贡献1815条经验 获得超6个赞
12345 | struct Node { int a; struct Node *next; }; |
链表中一般都有头结点,就是head,其中可以存放数据,也可以不存放数据。在动态建立链表的过程中,肯定需要定义一个新的结点,比如pNext。
1 | pNext=( struct Node *) malloc ( sizeof ( struct Node)); |
这时候应该将头结点head的next域指向该新的结点。但是head一般不移动,因为移动后就找不到头结点了。所以定义一个指针p,p在开始时指向头结点,就是
1 | p=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()函数,是建立链表,包含你想知道的问题,建立链表是一个循环结构。把运行结果也复制一下
- 3 回答
- 0 关注
- 4638 浏览
添加回答
举报
0/150
提交
取消