typedef struct Node
{int data;
struct Node *next;
}ListNode,*LinkList;
LinkList CreateLinkList()
{LinkList head,r,s;
int x;
int flag=1;
head=(LinkList)malloc(sizeof(ListNode));
head->next=Null;
r=head;
while(flag=1)
{ printf("please input data:\n");
scanf("%d",x);
if(x!=-1)
{s=(LinkList)malloc(sizeof(ListNode));
s->next=x;
r->next=s;
r=s;
}
else()
{ flag=0;
r->next=Null;
}
}
return head;
}
void PrintfList(LinkList head)
{LinkList p;
p=head->next;
while(p!=Null);
{printf("%d",p->data);p=p->next;}
printf("\n");
}
void main()
{LinkList head;
int x,i;
head=CreateLinkList();
}
这是个建立单链表的程序,发现不能运行,查了多次,不知道哪里有错误,请高手指点指点,小弟不胜感.
//我修改了一下你的代码,你看看吧:
#include<stdio.h>
typedef struct Node
{
int data;
struct Node *next;
}ListNode,*LinkList;
LinkList CreateLinkList()
{
LinkList head=NULL,r,s=NULL;
int x;
int flag=1;
//head=(LinkList)malloc(sizeof(ListNode));这一句应该是初始化吧,但是看不明白
head->next=NULL; // NULL写错为NuLL
r=head;
while(flag==1)//判断语句等于号是 ==
{
printf("please input data:\n");
scanf("%d",x);
if(x!=-1)
{
//s=(LinkList)malloc(sizeof(ListNode));
s->data=x;//x为int数据类型,不是指针,所以改next为data
r->next=s;
r=s;
}
else //else后面多余的()去掉
{ flag=0; r->next=NULL; } //NULL又写错了!
}
return head;
}
void PrintfList(LinkList head)
{
LinkList p;
p=head->next;
while(p!=NULL); //还是NULL写错问题
{
printf("%d",p->data);
p=p->next;
}
printf("\n");
}
void main()
{
LinkList head;
int x,i; //定义的x,i都没有作用,可以省去...
head=CreateLinkList();
}