有没有人帮我看看问题出在哪啊,在链表初始化的时候把头结点的next赋值为NULL之后,出了方法体就变成别的地址了,同样的我插入一条数据进去也会变成别的数据
#include <stdio.h>
#include <stdlib.h>
typedef struct linkList { //定义单链表节点类型
int num; //每个节点存放一个数据
struct linkList* next; //指针指向下一个节点
}linkList;
int InitList(linkList* L) { //初始化链表
//L=NULL; //不带头结点的初始化
//头结点初始化:
L = (linkList*)malloc(sizeof(linkList));//分配一个头结点
if (L == NULL) { //内存不足,分配失败
return 0;
}
L->next = NULL; //头结点之后暂时没有节点
return 1;
}
void headInsert(linkList* L, int num) { //在头部插入数据
linkList* n = (linkList*)malloc(sizeof(linkList));
n->num = num;
n->next = L->next;
L->next = &n;
}
void printList(linkList* L) {
//int j = 0; //现在指针指向的位置
L++;
while (L->next != NULL)
{
printf("%d\n", L->num);
L++;
}
}
int main() {
linkList L; //声明一个指向链表的指针
if (InitList(&L)) {//初始化一个空表
printf("链表初始化成功\n");
}
else {
printf("链表初始化失败\n");
}
headInsert(&L, 5);//插入数据
printList(&L);
return 0;
}