我在學習鏈表。我有一點麻煩。我學到了一些基本概念。如閱讀在列表中的數字如下所示:我的問題是:單向鏈表反向
- 任何人都可以給我一些提示,如何改善此代碼?我知道這很雜亂。
- 如果我要顛倒這個鏈表(保持地址和內容相同),但操縱指針。
我該怎麼做?我不想完整的解決方案,只是一些提示。如果任何人都可以繪製任何關於如何反轉鏈接列表的圖表,我們將不勝感激。
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node *next;
};
int main (int argc, char *argv[]){
struct node *pNew, *pHead, *pCurr;
int i, dataEntered, numberOfNodes;
printf("Please enter the amount of nodes: ");
scanf("%d", &numberOfNodes);
for (i = 0; i < numberOfNodes; i++){
printf("Enter data for node %d : ", numberOfNodes-i);
scanf("%d", &dataEntered);
pNew = malloc (sizeof(struct node));
pNew -> data = dataEntered;
pNew -> next = pHead;
pHead = pNew;
}
pCurr = pHead;
for (i = 0; i < numberOfNodes; i++){
printf("Node %d has a data value of: %d\n", i, pCurr->data);
pCurr = pCurr->next;
}
return 0;
}
沒有關於[反向鏈表]的現有問題(http ://stackoverflow.com/search?q =反向+鏈接+列表)有幫助嗎? – AShelly
你需要初始化pHead。 ''struct node * pNew,* pHead = NULL,* pCurr;' – BLUEPIXY
學習這些東西的訣竅是**將它分解成最小的可能步驟。**你知道如何(1)製作一個空列表, 2)測試一個列表是否爲空,(3)從非空列表的末尾刪除一個元素,以及(4)將一個元素插入到非空列表的開頭?如果你可以做這四件事情,那麼你可以反轉一個鏈表。你看到了嗎? –