想要定义一个数据结构的链表,请问怎样用纯C语言达到输入和输出的效果,另外请看看我的代码有什么错
代码如下:
#include
#include
typedef struct lnode{
struct lnode *next;
int data;
}Lnode;
void createlist(Lnode *header)
{
header=(Lnode *) malloc(sizeof (Lnode));
header->next=NULL;
int data;
Lnode *p,*q;
p=header;
while (1)
{
scanf("%d",&data);
if(data==999)
break;
q=(Lnode *) malloc(sizeof(Lnode));
q->next=NULL;
p->next=q;
p=q;
}
}
void printlist(Lnode *header)
{
Lnode *p;
p=header->next;
while(p)
{
printf("%d",p->data);
p=p->next;
}
}
void main()
{
Lnode header;
printf("输入:");
createlist(&header);
printf("输出:");
printlist(&header);
}
改动处见注释,供参考:
#include <stdio.h>
#include <stdlib.h>
typedef struct lnode {
struct lnode* next;
int data;
}Lnode;
void createlist(Lnode* header)
{
//header = (Lnode*)malloc(sizeof(Lnode));修改
//链表头结点已定义了,这里就不需要动态生成了。
header->next = NULL;
int data;
Lnode* p, * q;
p = header;
while (1)
{
scanf("%d", &data);
if (data == 999)
break;
q = (Lnode*)malloc(sizeof(Lnode));
q->next = NULL;
q->data = data; //修改
p->next = q;
p = q;
}
}
void printlist(Lnode* header)
{
Lnode* p;
p = header->next;
while (p)
{
printf(" %d", p->data);
p = p->next;
}
}
void main()
{
Lnode header; //定义了结构体变量,生成了链表头结点
printf("输入:");
createlist(&header);
printf("输出:");
printlist(&header);
}
while (1)是死循环呀
你先别忙搞链表,你换成数组先搞定输入什么时候能停下来的问题再说吧
链表不过是换了个形式,它跟数组没有本质区别