不工作,我有以下计划,以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