这段程序在运行结束后总会崩溃,我调试发现可能是输出函数有问题,请问各位大神如何修改?
#include<stdio.h>#include<stdlib.h>#defineFALSE0#defineOK1#defineERROR0typedefintStat...
#include<stdio.h>#include<stdlib.h>
#define FALSE 0
#define OK 1
#define ERROR 0
typedef int Status;
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
Status InitList_L(LinkList L); //初始话链表,返回头指针Head
LinkList CreatList_L(LinkList L, int n); //逆位序输入n个元素的值,建立带头结点的单链表L
void PrintLinkList_L(LinkList L); //输出链表
Status InitList_L(LinkList L)
{
L = (LinkList)malloc(sizeof(LNode));
if (L == NULL)
{
exit(ERROR);
}
L->next = NULL;
printf("初始化成功!\n");
return OK;
}
LinkList CreatList_L(LinkList L, int n)
{
int i = 0;
LNode *p = NULL;
printf("请依次输入%d个数据:\n", n);
for (i = n; i > 0; i --)
{
p = (LinkList)malloc(sizeof(LNode));
scanf("%d", &p->data);
p->next = L->next;
L->next = p;
}
printf("输入完成!\n");
}
void PrintLinkList_L(LinkList L)
{
LinkList p = L->next;
while (p != NULL)
{
printf("%4d", p->data);
p = p->next;
}
printf("\n");
}
Status main(void)
{
int n;
LNode L;
InitList_L(&L);
printf("请输入要输入数据的个数:");
scanf("%d", &n);
CreatList_L(&L, n);
PrintLinkList_L(&L);
return 0;
} 展开
#define FALSE 0
#define OK 1
#define ERROR 0
typedef int Status;
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
Status InitList_L(LinkList L); //初始话链表,返回头指针Head
LinkList CreatList_L(LinkList L, int n); //逆位序输入n个元素的值,建立带头结点的单链表L
void PrintLinkList_L(LinkList L); //输出链表
Status InitList_L(LinkList L)
{
L = (LinkList)malloc(sizeof(LNode));
if (L == NULL)
{
exit(ERROR);
}
L->next = NULL;
printf("初始化成功!\n");
return OK;
}
LinkList CreatList_L(LinkList L, int n)
{
int i = 0;
LNode *p = NULL;
printf("请依次输入%d个数据:\n", n);
for (i = n; i > 0; i --)
{
p = (LinkList)malloc(sizeof(LNode));
scanf("%d", &p->data);
p->next = L->next;
L->next = p;
}
printf("输入完成!\n");
}
void PrintLinkList_L(LinkList L)
{
LinkList p = L->next;
while (p != NULL)
{
printf("%4d", p->data);
p = p->next;
}
printf("\n");
}
Status main(void)
{
int n;
LNode L;
InitList_L(&L);
printf("请输入要输入数据的个数:");
scanf("%d", &n);
CreatList_L(&L, n);
PrintLinkList_L(&L);
return 0;
} 展开
2个回答
展开全部
#include<stdio.h>
#include<stdlib.h>
#define FALSE 0
#define OK 1
#define ERROR 0
typedef int Status;
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
int InitList_L(LinkList L); //初始话链表,返回头指针Head
void CreatList_L(LinkList &L, int n); //逆位序输入n个元素的值,建立带头结点的单链表L
void PrintLinkList_L(LinkList L); //输出链表
int InitList_L(LinkList L)
{
L = (LinkList)malloc(sizeof(LNode));
if (L == NULL)
{
exit(ERROR);
}
L->next = NULL;
printf("初始化成功!\n");
return OK;
}
void CreatList_L(LinkList &L, int n)
{
int i = 0;
LNode *p= NULL;
printf("请依次输入%d个数据:\n", n);
for (i = n; i > 0; i --)
{
p = (LinkList)malloc(sizeof(LNode));
scanf("%d", &p->data);
p->next = L;
L = p;
}
printf("输入完成!\n");
}
void PrintLinkList_L(LinkList L)
{
LinkList p=L;
while (p != NULL)
{
printf("%4d", p->data);
p = p->next;
}
printf("\n");
}
int main(void)
{
int n;
LNode *L=NULL;
InitList_L(L);
printf("请输入要输入数据的个数:");
scanf("%d", &n);
CreatList_L(L, n);
PrintLinkList_L(L);
return 0;
}
#include<stdlib.h>
#define FALSE 0
#define OK 1
#define ERROR 0
typedef int Status;
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
int InitList_L(LinkList L); //初始话链表,返回头指针Head
void CreatList_L(LinkList &L, int n); //逆位序输入n个元素的值,建立带头结点的单链表L
void PrintLinkList_L(LinkList L); //输出链表
int InitList_L(LinkList L)
{
L = (LinkList)malloc(sizeof(LNode));
if (L == NULL)
{
exit(ERROR);
}
L->next = NULL;
printf("初始化成功!\n");
return OK;
}
void CreatList_L(LinkList &L, int n)
{
int i = 0;
LNode *p= NULL;
printf("请依次输入%d个数据:\n", n);
for (i = n; i > 0; i --)
{
p = (LinkList)malloc(sizeof(LNode));
scanf("%d", &p->data);
p->next = L;
L = p;
}
printf("输入完成!\n");
}
void PrintLinkList_L(LinkList L)
{
LinkList p=L;
while (p != NULL)
{
printf("%4d", p->data);
p = p->next;
}
printf("\n");
}
int main(void)
{
int n;
LNode *L=NULL;
InitList_L(L);
printf("请输入要输入数据的个数:");
scanf("%d", &n);
CreatList_L(L, n);
PrintLinkList_L(L);
return 0;
}
更多追问追答
追问
编译通不过啊,貌似C语言里面不能void CreatList_L(LinkList &L, int n); 这样声明函数的把,地址只能做形参的吧??
追答
#include
#include
#define FALSE 0
#define OK 1
#define ERROR 0
typedef int Status;typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
int InitList_L(LinkList L); //初始话链表,返回头指针Head
LinkList CreatList_L(LinkList L, int n); //逆位序输入n个元素的值,建立带头结点的单链表L
void PrintLinkList_L(LinkList L); //输出链表
int InitList_L(LinkList L)
{
L = (LinkList)malloc(sizeof(LNode));
if (L == NULL)
{
exit(ERROR);
}
L->next = NULL;
printf("初始化成功!\n");
return OK;
}
LinkList CreatList_L(LinkList L, int n)
{
int i = 0;
LNode *p= NULL;
printf("请依次输入%d个数据:\n", n);
for (i = n; i > 0; i --)
{
p = (LinkList)malloc(sizeof(LNode));
scanf("%d", &p->data);
p->next = L;
L = p;
}
printf("输入完成!\n");
return L;
}
void PrintLinkList_L(LinkList L)
{
LinkList p=L;
while (p != NULL)
{
printf("%4d", p->data);
p = p->next;
}
printf("\n");
}
int main(void)
{
int n;
LNode *L=NULL;
InitList_L(L);
printf("请输入要输入数据的个数:");
scanf("%d", &n);
L=CreatList_L(L, n);
PrintLinkList_L(L);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询