![]() |
#2
czsbc2011-09-26 11:20
![]() #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 Mergelist_L(LNode *La,LNode *Lb){ //已知的单链表La和Lb的元素按值非递减排列 //归并La和Lb得到新的单链表Lc,Lc的元素也按值非递减排列。 LNode *pa,*pb,*Lc,*pc; Lc=(LNode *)malloc(sizeof(LNode)); pc=Lc; pa=La->next; pb=Lb->next; while(pa && pb) { if(pa->data < pb->data) { pc->next=pa; pa=pa->next; pc=pc->next; } else { pc->next=pb; pb=pb->next; pc=pc->next; } } while(pa) { pc->next=pa; pa=pa->next; pc=pc->next; } while(pb) { pc->next=pb; pb=pb->next; pc=pc->next; }//将剩余段插入Lc中 pc->next=NULL; while(Lc->next!=NULL) { Lc=Lc->next; cout <<Lc->data << " "; } cout << endl; } int main() { LNode *La,*Lb; int a,b; cout <<"请输入A链表中元素的数目"; cin >> a; cout <<"请按非递增顺序输入A链表中的元素"; createlist_L(&La,a); cout <<"请输入B链表中元素的数目"; cin >> b; cout <<"请按非递增顺序输入B链表中的元素"; createlist_L(&Lb,b); cout <<"AUB: "; Mergelist_L(La,Lb); return 0; } |
#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;
}
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 <<"AUB "; Mergelist_L(La,Lb);
return 0;
}