我写的头插法建立单链表如下,但是运行出来的结果是错的,不知道是代码哪里写错了呢?
#include
#include
#pragma warning(disable:4996);
typedef struct LinkList {
int data;
struct LinkList* next;
}Linklist;
void List_headinsert(LinkList* L) {
LinkList* node;
int x;
scanf("%d", &x);
L = (LinkList*)malloc(sizeof(LinkList));
while (x != -1) { //输入-1跳出
node = (LinkList*)malloc(sizeof(LinkList));
node->data = x;
node->next = L->next;
L->next = node;
scanf("%d", &x);
}
}
int main() {
Linklist l;
LinkList* L;
L = &l;
List_headinsert(L);
while (L != NULL) { //打印单链表
printf("%d ", L->data);
L = L->next;
}
return 0;
}
修改见注释,供参考:
#include <stdio.h>
#include <stdlib.h>
#pragma warning(disable:4996);
typedef struct LinkList {
int data;
struct LinkList* next;
}Linklist;
void List_headinsert(LinkList** L) { //修改 LinkList* L
LinkList* node;
int x;
scanf("%d", &x);
(*L) = (LinkList*)malloc(sizeof(LinkList)); //修改
(*L)->next = NULL; //修改
while (x != -1) { //输入-1跳出
node = (LinkList*)malloc(sizeof(LinkList));
node->data = x;
node->next = (*L)->next; //修改
(*L)->next = node; //修改
scanf("%d", &x);
}
}
int main() {
//Linklist l; //修改 定义的 l 是变量,它的空间已经分配了,是静态的,在这代码里是多余的。
LinkList* L, * p;
L = NULL; //L = &l; 修改
List_headinsert(&L); //修改
p = L->next; //修改
while (p != NULL) { //打印单链表
printf("%d ", p->data); //修改
p = p->next; //修改
}
return 0;
}
数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633
给你找了一篇非常好的博客,你可以看看是否有帮助,链接:尾插法建立单链表并输出