在写链表的删除和插入操作时 编译没错运行出错 大家帮忙看看了
# include <iostream># include <stdlib.h>
using namespace std;
typedef struct node //定义线性链表
{
int data;
struct node *next;
}node,*linklist;
int inite (linklist &L) //初始化链表
{
L = new node;
if (!L)
return 0;
L->next = NULL;
return 1;
}
node *find_LL (linklist L,int i) //查找某个位置的结点
{
int j=0;
node *p = L;
while (j<i && p!= NULL)
{
j++;
p = p->next;
}
if (j == i)
return p;
return NULL;
}
int delete_LL (linklist &L,int i,int &e) //删除i位置的结点
{
node *p,*q;
p = find_LL(L,i-1);
if (p == NULL)
return 0;
q = p->next;
if (q == NULL)
return 1;
p->next = q->next;
e = q->data ;
free(q);
return 1;
}
int inseart_LL(linklist &L,int i,int e)// 在i位置插入e值
{
node *p,*q;
p = find_LL(L,i-1);
if (p == NULL)
return 0;
q = new node;
q->data = e;
q->next = p->next;
p->next = q;
return 1;
}
void print_LL (linklist L)// 打印链表
{
node *p = L->next;
while (p!=NULL)
{
cout<<p->data<<" ";
p = p->next;
}
cout<<endl;
}
int main ()
{
linklist L;
int n,i,e,j,k;
cout<<"请输入链表的长度:"<<endl;
cin>>n;
cout<<"请输入链表内容:"<<endl;
for (i=1;i<=n;i++)
{
cin>>e;
inseart_LL (L,i,e);
}
cin.ignore ();
cout<<"请输入要删除链表的位置:"<<endl;
cin>>j;
delete_LL(L,j,e);
print_LL(L);
cout<<"请输入要插入的位置i和值e"<<endl;
cin>>j>>k;
inseart_LL(L,j,k);
print_LL(L);
system ("pause");
return 0;
}
运行时 当输完链表的内容时 敲回车就出错