【发布时间】:2012-09-29 17:29:46
【问题描述】:
嗯,首先, 不得不承认,我真的没有实现链表,嗯,说实话,我最近没用过C。
所以我确信这是一个非常愚蠢的简单错误。
嗯(不知道为什么——但我就是喜欢这个词), 我试着刷新一下思路,然后我决定实现一些简单的链表。
void addToLast(linkedList* head, int data) {
linkedList* ptr = head; // points to ptr
while(ptr) /* p ins't null */ ptr = ptr->next;
// ptr now is null
ptr = (linkedList*)malloc(sizeof(linkedList)); // we have new node
if(ptr == NULL) printf("DAFUQ Null\n");
ptr->num = data;
ptr->next = NULL;
// return!
return;
}
好吧,出于某种奇怪的原因,每次迭代 ptr 的值都是 NULL。
似乎每当我调用addToLast 函数时,ptr 都保持为空。
我真的不知道为什么 - 我真的很累,或者我只是有一个愚蠢的问题。
好吧,正如我所说的 - 我不明白为什么 ptr 保持为 NULL,
我分配了一个新节点 -
ptr = (linkedList*)malloc(sizeof(linkedList)); // we have new node
那么为什么 ptr 不保存它的值呢?
主要&打印功能:
void printList(linkedList* list) {
linkedList* p;
putchar('[');
for(p = list;p;) {
printf("%d, ",p->num);
p = p->next;
}
putchar(']');
}
int main() {
// create list
linkedList *root = (linkedList*)malloc(sizeof(linkedList));
root->next = NULL;
addToLast(root,0);
addToLast(root,5);
printList(root);
system("pause");
return 0; // blet :o
}
【问题讨论】:
-
除了内存泄漏,一点也不多。你遍历 *next 指针直到你到达一个空值,创建一个新节点,然后分配它....嗯.. 无处可去?
标签: c visual-studio-2010 linked-list