单链表出错了。求高手指点。
#include <iostream>using namespace std;
#define OVERFLOW 0
#define FALSE 0
#define TRUE 1
#define ERROR 0
#define OK 1
typedef int Status;
typedef int ElemType;
typedef struct LNode
{
ElemType data ;
struct LNode *next;
}LNode, *Linklist;
void Create_Linklist(Linklist &L)
{
Linklist p;
p=(Linklist)malloc(sizeof(LNode));
if (!p)
exit (OVERFLOW);
L=p;
L->next=NULL;
}
void Insret_Linklist(Linklist &L)
{
Linklist p;
int n,i;
printf ("请输入插入节点的个数n:");
scanf ("%d",&n);
for (i=n;i>0;i--)
{
p=(Linklist)malloc(sizeof(LNode));
if (!p)
exit (OVERFLOW);
cin>>p->data;
p->next=L->next;
L->next=p;
}
}
Status Visit_Linklist(Linklist &L)
{
Linklist p;
int i=1;
p=L->next;
if (L->next==NULL)
{
return ERROR;
}
while (p->next!=NULL)
{
cout<<p->data;
p=p->next;
i++;
}
cout<<p->data<<endl<<"长度为:"<<i<<endl;
return OK;
}
Status Delete_Linklist(Linklist &L)
{
Linklist p,q;
int k=0;
int i;
cout<<"请输入删除节点的值为:"<<endl;
cin>>i;
if (L->next==NULL)
return ERROR;
p=L;
q=L->next;
while (q!=NULL)
{
if (q->data==i)
{
k=1;p=q;
p->next=q->next;
free(q);
q=p->next;
}
}
if (k==0)
{
cout <<"表中没有"<<i<<"的节点"<<endl;
}
return OK;
}
Status Clera_Linklist(Linklist &L)
{
Linklist p=NULL;
L->next=p;
return OK;
}
void main ()
{
Linklist L;
Create_Linklist(Linklist &L);
Insret_Linklist(Linklist &L);
Visit_Linklist(Linklist &L);
Delete_Linklist(Linklist &L);
Clera_Linklist(Linklist &L);
}
求高手指点指点哦。怎么出错了。