链表问题
我建立了一个链表,可当运行时引发了内存错误,刚学不知是什么原因麻烦高手帮帮忙
#include <iostream.h>
#include <stdlib.h>
typedef int datatype;
typedef struct Lnode
{
datatype data;
struct Lnode *next;
}LinkList;
Initlist(LinkList *L) //建立链表
{
L=(LinkList *)malloc(sizeof(Lnode));
if(!L)
cout<<"建立链表失败!"<<endl;
L->next=NULL;
return 1;
}
Create_L(LinkList *L,int n) //添加N个数据
{
LinkList *T;
Initlist(T);
LinkList *p;
int i;
for(i=n;i>0;--i)
{
p=(LinkList *)malloc(sizeof(Lnode));
if(!p)
cout<<"增加结点失败!"<<endl;
cin>>p->data;
p->next=T->next;
T->next=p;
}
cout<<"你建立的链表为:";
for(i=0;i<n;i++)
{
cout<<p->data<<" ";
p++;
}
return 1;
}
VisitElem_L(LinkList *L,int i,datatype &e) //查找
{
LinkList *p;
p=L->next;
int j=1;
while(p!=NULL && j<i)
{
p=p->next;
++j;
}
if(p==NULL || j>i)
cout<<"第"<<i<<"个元素不存在!"<<endl;
e=p->data;
return 1;
}
Insert_Link(LinkList *L,int i,datatype e) //插入
{
LinkList *s,*p;
s=(LinkList *)malloc(sizeof(Lnode));
if(!s)
cout<<"生成结点失败!"<<endl;
s->next=NULL;
p=L;
int j=0;
while(p && j<i-1)
{
p=p->next;
++j;
}
if(!p || j>i-1)
cout<<"插入错误!"<<endl;
s->next=p->next;
p->next=s;
return 1;
}
Delete_Link(LinkList *L,int i,datatype &e) //删除
{
LinkList *p;
p=L;
LinkList *q;
int j=0;
while(p->next && j<i-1)
{
p=p->next;
++j;
}
if(!(p->next) || j>i-1)
cout<<"没有找到你要删除的数!"<<endl;
q=p->next;
p->next=q->next;
e=q->data;
free(q);
return 1;
}
void main()
{
int num;
while(1)
{
cout<<"1.建立链表"<<endl;
cout<<"2.查找数据"<<endl;
cout<<"3.插入数据"<<endl;
cout<<"4.删除数据"<<endl;
cout<<"0.退出"<<endl;
cout<<"请输入0-4进行操作:";
cin>>num;
switch(num)
{
case 1:
LinkList *L;
int n;
cout<<"请输入你要添加的数据的个数:";
cin>>n;
Create_L(L,n);
case 2:LinkList *H;
int i;
datatype e;
cout<<"你要查找的数据的位置为:";
cin>>i;
VisitElem_L(H,i,e);
cout<<"第"<<i<<"个元素为:"<<e<<endl;
case 3:int m;
datatype k;
LinkList *h;
cout<<"请输入你要插入的数据:";
cin>>m;
cout<<"请输入你要插入的位置:";
cin>>n;
Insert_Link(h,m,k);
cout<<"插入后的链表为:";
while(L->next!=NULL)
{
cout<<L->data<<" ";
L++;
}
case 4:int j;
datatype s;
LinkList *w;
cout<<"请输入你所删除数据的位置:";
cin>>j;
Delete_Link(w,j,s);
cout<<"你所删除的数据为:"<<e<<endl;
case 0:
cout<<"谢谢使用!"<<endl;
exit(0);
}
}
}