作者在 2011-09-26 08:21:39 发布以下内容
#include<iostream>
using namespace std;
typedef struct LNode{
int data;
struct LNode *next;
}LNode;
void createlist_L(LNode *L,int n)
{
//逆序输入N个元素的值,建立带表头结点的单链表L
LNode *p;
int i;
L=(LNode *)malloc(sizeof(LNode));
L->next = NULL;//先建立一个带头结点的单链表
for(i=n;i>0;--i)
{
p=(LNode *)malloc(sizeof(LNode));//生成新结点
scanf("%d",&p->data);
p->next = L->next;//插入到表头
L->next = p;
}
}//creatlist L
void insert(LNode *L,LNode *q)
{
LNode *p;
p=(LNode *)malloc(sizeof(LNode));
p->data=q->data;
p->next=L->next;
L->next=p;
}//插入某 一元素
void Mergelist_L(LNode *La,LNode *Lb){
//已知的单链表La和Lb的元素按值非递减排列
//归并La和Lb得到新的单链表Lc,Lc的元素也按值非递减排列。
LNode *pa,*pb;
Lc=(LNode *)malloc(sizeof(LNode));
Lc->next=NULL;
pa=La->next; pb=Lb->next;
while(pa && pb)
{
if(pa->data < pb->data)
{
insert(Lc,pa); pa=pa->next;
}
else if(pa->data > pb->data)
{insert(Lc,pb); pb=pb->next;}
else {insert(Lc,pa); pa=pa->next; pb=pb->next;}
}
while(pa)
{insert(Lc,pa); pa=pa->next;}
while(pb)
{insert(Lc,pb); pb=pb->next;}//将剩余段插入Lc中
while(Lc->next!=NULL)
{
Lc=Lc->next;
cout <<Lc->data << " ";
}
cout << endl;
}
void mix(LNode *La,LNode *Lb)
{
LNode *Lc,*pa,*pb;
Lc=(LNode *)malloc(sizeof(LNode));
Lc->next=NULL;
pa=La->next;
pb=Lb->next;
while(pa && pb)
{
if(pa->data < pb->data)
{
pa=pa->next;
}
else if(pa->data > pb->data)
{ pb=pb->next;}
else {insert(Lc,pa); pa=pa->next; pb=pb->next;}
}
while(Lc->next!=NULL)
{
Lc=Lc->next;
cout <<Lc->data << " ";
}
cout << endl;
}
void differ(LNode *La,LNode *Lb)
{
LNode *pa,*pb,*Lc;
Lc=(LNode *)malloc(sizeof(LNode));
Lc->next=NULL;
pa=La->next;
pb=Lb->next;
while(pa && pb)
{
if(pa->data < pb->data)
{
insert(Lc,pa); pa=pa->next;
}
else if(pa->data > pb->data)
{ pb=pb->next;}
else { pa=pa->next; pb=pb->next;}
}
while(pa)
{insert(Lc,pa); pa=pa->next;}
while(Lc->next!=NULL)
{
Lc=Lc->next;
cout <<Lc->data << " ";
}
cout << endl;
}
int main(){
using namespace std;
typedef struct LNode{
int data;
struct LNode *next;
}LNode;
void createlist_L(LNode *L,int n)
{
//逆序输入N个元素的值,建立带表头结点的单链表L
LNode *p;
int i;
L=(LNode *)malloc(sizeof(LNode));
L->next = NULL;//先建立一个带头结点的单链表
for(i=n;i>0;--i)
{
p=(LNode *)malloc(sizeof(LNode));//生成新结点
scanf("%d",&p->data);
p->next = L->next;//插入到表头
L->next = p;
}
}//creatlist L
void insert(LNode *L,LNode *q)
{
LNode *p;
p=(LNode *)malloc(sizeof(LNode));
p->data=q->data;
p->next=L->next;
L->next=p;
}//插入某 一元素
void Mergelist_L(LNode *La,LNode *Lb){
//已知的单链表La和Lb的元素按值非递减排列
//归并La和Lb得到新的单链表Lc,Lc的元素也按值非递减排列。
LNode *pa,*pb;
Lc=(LNode *)malloc(sizeof(LNode));
Lc->next=NULL;
pa=La->next; pb=Lb->next;
while(pa && pb)
{
if(pa->data < pb->data)
{
insert(Lc,pa); pa=pa->next;
}
else if(pa->data > pb->data)
{insert(Lc,pb); pb=pb->next;}
else {insert(Lc,pa); pa=pa->next; pb=pb->next;}
}
while(pa)
{insert(Lc,pa); pa=pa->next;}
while(pb)
{insert(Lc,pb); pb=pb->next;}//将剩余段插入Lc中
while(Lc->next!=NULL)
{
Lc=Lc->next;
cout <<Lc->data << " ";
}
cout << endl;
}
void mix(LNode *La,LNode *Lb)
{
LNode *Lc,*pa,*pb;
Lc=(LNode *)malloc(sizeof(LNode));
Lc->next=NULL;
pa=La->next;
pb=Lb->next;
while(pa && pb)
{
if(pa->data < pb->data)
{
pa=pa->next;
}
else if(pa->data > pb->data)
{ pb=pb->next;}
else {insert(Lc,pa); pa=pa->next; pb=pb->next;}
}
while(Lc->next!=NULL)
{
Lc=Lc->next;
cout <<Lc->data << " ";
}
cout << endl;
}
void differ(LNode *La,LNode *Lb)
{
LNode *pa,*pb,*Lc;
Lc=(LNode *)malloc(sizeof(LNode));
Lc->next=NULL;
pa=La->next;
pb=Lb->next;
while(pa && pb)
{
if(pa->data < pb->data)
{
insert(Lc,pa); pa=pa->next;
}
else if(pa->data > pb->data)
{ pb=pb->next;}
else { pa=pa->next; pb=pb->next;}
}
while(pa)
{insert(Lc,pa); pa=pa->next;}
while(Lc->next!=NULL)
{
Lc=Lc->next;
cout <<Lc->data << " ";
}
cout << endl;
}
int main(){
LNode *La,*Lb,*Lc;
int a,b;
cout <<"请输入A链表中元素的数目";
cin >> a;
cout <<"请按非递增顺序输入A链表中的元素";
createlist_L(La,a);
cout <<"请输入B链表中元素的数目";
cin >> b;
cout <<"请按非递增顺序输入B链表中的元素";
createlist_L(Lb,b);
cout <<"AnB "; mix(La,Lb);
cout <<"AUB "; Mergelist_L(La,Lb);
differ <<"A-B "; differ(La,Lb);
return 0;
}
请求高人帮助,为什么没法运行
int a,b;
cout <<"请输入A链表中元素的数目";
cin >> a;
cout <<"请按非递增顺序输入A链表中的元素";
createlist_L(La,a);
cout <<"请输入B链表中元素的数目";
cin >> b;
cout <<"请按非递增顺序输入B链表中的元素";
createlist_L(Lb,b);
cout <<"AnB "; mix(La,Lb);
cout <<"AUB "; Mergelist_L(La,Lb);
differ <<"A-B "; differ(La,Lb);
return 0;
}
请求高人帮助,为什么没法运行