我有一個向後退出的鏈接列表。當我想把它們放在前面時,我似乎在列表的後面增加了元素。 我的節點顯示如下:鏈接列表出現倒退
struct node{
int data;
struct node* next;};
接下來,我設置的頭部和變量
int info,x,listLength;
struct node *head = NULL;
struct node *temp;
printf("How many nodes?\n");
scanf("%d",&listLength);
現在我提示列表中的一個新的條目,並沿着節點移動
for(x=1;x<=listLength;x++){
printf("Insert an X value for node %d\n",x);
scanf("%d",&info);
temp = (struct node*)malloc(sizeof(struct node));
temp->data = info;
temp->next = head;
head = temp;
}
最後我輸出結果並釋放內存空間
while(temp!=NULL){
printf("WE GOT %d\n",temp->data);
temp = temp->next;
}
free(temp);
但是,如果我輸入三個節點的輸入並輸入1,2然後輸入3,則輸出爲3,2,然後是1!我如何改變這個以確保節點被添加到正確的位置? 在此先感謝!
您將節點插入列表的頭部 - 如果您想保持相同的順序,那麼您需要將它們追加到列表的尾部。 –
其實,你*是把新的元素放在列表的前面。這就是爲什麼它們會以相反的順序結束(想想看,也許會在紙上模擬一遍)。如果你希望他們在列表中的順序與你添加它們的順序相同,那麼你需要將它們添加到列表的末尾,這將需要更復雜的列表結構(帶有末尾指針並且可能是某種反向鏈接取決於你可能想如何操作列表中的項目),或者你必須遍歷列表才能找到結束節點以添加新節點。 –