最近开始复习数据结构,写了个测试程序时发现了一个问题。
typedef struct lnode
{
int data;
struct lnode *next;
}lnode,*linklist;
int main()
{
lnode L;
Initlist(&L);
...
}
void Initlist(linklist pL)
{
pL=(linklist)malloc(sizeof(lnode));
pL->next=NULL
}
当我初始化带头结点的单链表时,实际上操作的是函数体内新开辟的内存,使之指针域为空,并不是主函数中开辟的内存,这样会导致你实际对 L 这个结构体并为进行任何操作。
void Initlist(linklist pL)
{
pL->next=NULL
}
这样即可。