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 關注
- 4742 瀏覽
添加回答
舉報
0/150
提交
取消

