线性链表问题求助
小弟刚学了数据结构 编了一个线性链表的程序 合并操作不能实现 输出时崩溃 求助啊#include<iostream>
using namespace std;
typedef int elemtype;
struct lnode
{
elemtype data;
lnode *next;
};
void createlist_one(lnode *&l,int n)//表头插法
{
lnode *p;
l=new lnode;
l->next=NULL;
for(int i=0;i<n;i++)
{
p=new lnode;
cout<<"请输入第"<<i+1<<"个数:";
cin>>(p->data);
p->next=l->next;
l->next=p;
}
}
void createlist_two(lnode *&l,int n)//表尾插法
{
l=new lnode;
l->next=NULL;
lnode *ptr=l,*p;
for(int i=0;i<n;i++)
{
p=new lnode;
ptr->next=p;
cout<<"请输入第"<<i+1<<"个数:";
cin>>p->data;
ptr=p;
}
}
int insertlist(lnode *&l,int &n)
{
lnode *p=l,*s;
int j;
cout<<"请输入需要插入的位置:";
cin>>j;
for(int i=0;i<j-1&&p;i++)
{
p=p->next;
}
if(!p||i>j-1)
return 0;
s=new lnode;
cout<<"请输入需要插入的值:";
cin>>s->data;
s->next=p->next;
p->next=s;
n++;
return 1;
}
int deletelist(lnode *&l, int &n)
{
lnode *p=l,*q;
int j;
cout<<"请输入需要删除的位置:";
cin>>j;
for(int i=0;i<j-1&&p->next;i++)
{
p=p->next;
}
if(!(p->next)||i>j-1)
return 0;
q=p->next;
p->next=q->next;
delete q;
n--;
return 1;
}
void mergelist(lnode *&la,lnode *&lb,lnode *&lc)
{
lnode *pa,*pb,*pc;
pa=la->next;
pb=lb->next;
pc=lc=la;
while(pa&&pb)
{
if(pa->data<=pb->data)
{
pc->next=pa;
pc=pa;
pa=pa->next;
}
else
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
}
pc->next=pa?pa:pb;
}
void outputlist(lnode *l,int n)//输出
{
lnode *p=l;
for(int j=0;j<=n-1;j++)
{
p=p->next;
cout<<p->data<<" ";
}
cout<<endl;
}
int main()
{
lnode *l,*la,*lb,*lc;
int n=5;
createlist_two(l,n);
outputlist(l,n);
insertlist(l,n);
outputlist(l,n);
deletelist(l,n);
outputlist(l,n);
createlist_two(la,n);
createlist_two(lb,n);
createlist_two(lc,0);
mergelist(la,lb,lc);
outputlist(lc,10);
return 0;
}