我正在尝试在 C 中实现一个链表:
#include <stdio.h>
#include <stdlib.h>
typedef struct el{
int number;
struct el *next;
} linkedlist;
linkedlist* newel(){
linkedlist *newelement = (linkedlist*)malloc(sizeof(linkedlist));
newelement->number = 10;
newelement->next=NULL;
return newelement;
}
void add(linkedlist **head, linkedlist *item){
if(!*head){
*head = item;
}
else{
item->next = *head;
*head = item;
}
}
void prnt(linkedlist *head){
while(head!=NULL){
printf("%d\n", head->number);
head=head->next;
}
}
int main(){
linkedlist *hd;
add(&hd,newel());
add(&hd,newel());
add(&hd,newel());
prnt(hd);
system("PAUSE");
return 0;
}
我得到:
Unhandled exception at 0x010c14e9 in test.exe: 0xC0000005: Access violation reading location 0xcccccccc.
我尝试调试,问题出在 prnt 函数中。当 head 指向最后一个元素时,它似乎没有看到 NULL ......它只是在继续。我现在不知道如何修复它。