不工作,我有以下計劃,以C語言編寫的Structs預期用C
以下輸出我期待在前面加上一個值,我的尾巴是40,我的頭30後,但事實並非如此。
我是否在構造的內存分配時犯了錯誤,還是比那不明顯?
我在Mac OSX上使用GCC編譯器。
#include <stdio.h>
struct LinkedListNode {
int data;
struct LinkedListNode *next;
};
struct LinkedList {
int size;
struct LinkedListNode *head;
struct LinkedListNode *tail;
};
struct LinkedList create_linked_list(){
struct LinkedList linkedList;
linkedList.size = 0;
linkedList.head = NULL;
linkedList.tail = NULL;
return linkedList;
}
struct LinkedList prepend(struct LinkedList *linkedList, int data){
struct LinkedListNode linkedListNode;
linkedListNode.data = data;
linkedListNode.next = linkedList->head;
linkedList->head = &linkedListNode;
if(linkedList->tail == NULL){
printf("Setting tail to: %d\n", data);
linkedList->tail = &linkedListNode;
}else{
printf("The tail is: %d\n", linkedList->tail->data);
}
linkedList->size = linkedList->size + 1;
return *linkedList;
}
int main(){
struct LinkedList linkedList;
linkedList = create_linked_list();
linkedList = prepend(&linkedList, 40);
struct LinkedListNode head = *linkedList.head;
struct LinkedListNode tail = *linkedList.tail;
printf("%d\n", head.data);
printf("%d\n", tail.data);
printf("%d\n", linkedList.size);
linkedList = prepend(&linkedList, 30);
head = *linkedList.head;
tail = *linkedList.tail;
printf("%d\n", head.data);
printf("%d\n", tail.data);
printf("%d\n", linkedList.size);
}
輸出:
Setting tail to: 40
40
40
1
The tail is: 30
30
30
2
請不要更新您的問題以包含答案的結果。這是答案的目的。通過接受答案,你已經展示瞭如何解決你的問題 – Justin