早教吧作业答案频道 -->其他-->
来个牛人帮我做题吧~1,假设有两个按元素值递增次序排列的线性表,均以单链表形式存储.请编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表,并要求利用原来两个单链表的
题目详情
来个牛人帮我做题吧~
1,假设有两个按元素值递增次序排列的线性表,均以单链表形式存储.请编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表.
节点结构:
typedef struct node{
int data;
struct node *next;
} linknode,*link;
link Union(link la,lb)
2,typedef struct node
{int data; struct node *next;
}linknode,*link;
bool inclusion(link ha,link hb):boolean;
/*以ha和hb为头指针的带头节点单链表分别表示递增有序表A和B,本算法判别表A是否包含在表B内,若是,则返回“true”,否则返回“false”*/
{
pa=ha->next; pb=hb->next; (1) ;
while ((2) )
{
if (pa->data==pb->data )
(3);
else
(4) ;
}
(5) ;
}
1,假设有两个按元素值递增次序排列的线性表,均以单链表形式存储.请编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表.
节点结构:
typedef struct node{
int data;
struct node *next;
} linknode,*link;
link Union(link la,lb)
2,typedef struct node
{int data; struct node *next;
}linknode,*link;
bool inclusion(link ha,link hb):boolean;
/*以ha和hb为头指针的带头节点单链表分别表示递增有序表A和B,本算法判别表A是否包含在表B内,若是,则返回“true”,否则返回“false”*/
{
pa=ha->next; pb=hb->next; (1) ;
while ((2) )
{
if (pa->data==pb->data )
(3);
else
(4) ;
}
(5) ;
}
▼优质解答
答案和解析
#include
#include
typedef struct node
{ int data;
struct node *next;
}linknode,*link;
link Union(link la,link lb) //甯﹀ご鑺傜偣
{ link pa,pb,pc,hc,temp;
hc=la;
pc=hc;
pa=la->next;
pb=lb->next;
while(pa && pb)
{
if(pa->datadata)
{
pc->next=pa;
pc=pa;
pa=pa->next;
}
else
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
}
if(pa!=NULL)
pc->next=pa;
if(pb!=NULL)
pc->next=pb;
//鍙嶈浆閾捐〃
pc=hc->next;
pb=NULL;
while(pc)
{
temp=pc;
pc=pc->next;
temp->next=pb;
pb=temp;
}
hc->next=pb;
return hc;
}
//娴嬭瘯
void main()
{ void create(link &head,int *arr,int num);
int arr1[]={ 3,5,8,11};
int arr2[]={2,6,8,9,11,15,20};
link la,lb;
create(la,arr1,4);
create(lb,arr2,7);
la=Union(la,lb);
la=la->next;
while(la)
{
printf("[%2d] ",la->data);
la=la->next;
}
system("pause");
}
void create(link &head,int *arr,int num)
{ link ptr;
head=(link ) malloc(sizeof(struct node));
if(head==NULL)
{
exit(1);
}
head->next=NULL;
ptr=head;
for(int i=0;i {
ptr->next=(link ) malloc(sizeof(struct node));
if(ptr->next==NULL)
{
exit(1);
}
ptr->next->next=NULL;
ptr->next->data=arr[i];
ptr=ptr->next;
}
}
// ######################################################
//绗?簩涓?
#include
#include
typedef struct node
{ int data;
struct node *next;
}linknode,*link;
//娴嬭瘯
void main()
{ void create(link &head,int *arr,int num);
bool inclusion(link ha,link hb);
//int arr1[]={ 3,5,8,11};
//int arr2[]={2,6,8,9,11,15,20};
int arr1[]={4,9};
int arr2[]={3,4,4,5,7,9};
link la,lb;
create(la,arr1,2);
create(lb,arr2,6);
if(inclusion(la,lb))
printf("\n鏄痋n");
printf("\n");
system("pause");
}
void create(link &head,int *arr,int num)
{ link ptr;
head=(link ) malloc(sizeof(struct node));
if(head==NULL)
{
exit(1);
}
head->next=NULL;
ptr=head;
for(int i=0;i {
ptr->next=(link ) malloc(sizeof(struct node));
if(ptr->next==NULL)
{
exit(1);
}
ptr->next->next=NULL;
ptr->next->data=arr[i];
ptr=ptr->next;
}
}
bool inclusion(link ha,link hb)
{
link pa,pb;
pa=ha->next;
pb=hb->next;
while(pa && pb)
{
if(pa->data==pb->data)
{
pa=pa->next;
pb=pb->next;
}
else
pb=pb->next;
}
if(pa==NULL)
return true;
else
return false;
}
#include
typedef struct node
{ int data;
struct node *next;
}linknode,*link;
link Union(link la,link lb) //甯﹀ご鑺傜偣
{ link pa,pb,pc,hc,temp;
hc=la;
pc=hc;
pa=la->next;
pb=lb->next;
while(pa && pb)
{
if(pa->data
{
pc->next=pa;
pc=pa;
pa=pa->next;
}
else
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
}
if(pa!=NULL)
pc->next=pa;
if(pb!=NULL)
pc->next=pb;
//鍙嶈浆閾捐〃
pc=hc->next;
pb=NULL;
while(pc)
{
temp=pc;
pc=pc->next;
temp->next=pb;
pb=temp;
}
hc->next=pb;
return hc;
}
//娴嬭瘯
void main()
{ void create(link &head,int *arr,int num);
int arr1[]={ 3,5,8,11};
int arr2[]={2,6,8,9,11,15,20};
link la,lb;
create(la,arr1,4);
create(lb,arr2,7);
la=Union(la,lb);
la=la->next;
while(la)
{
printf("[%2d] ",la->data);
la=la->next;
}
system("pause");
}
void create(link &head,int *arr,int num)
{ link ptr;
head=(link ) malloc(sizeof(struct node));
if(head==NULL)
{
exit(1);
}
head->next=NULL;
ptr=head;
for(int i=0;i
ptr->next=(link ) malloc(sizeof(struct node));
if(ptr->next==NULL)
{
exit(1);
}
ptr->next->next=NULL;
ptr->next->data=arr[i];
ptr=ptr->next;
}
}
// ######################################################
//绗?簩涓?
#include
#include
typedef struct node
{ int data;
struct node *next;
}linknode,*link;
//娴嬭瘯
void main()
{ void create(link &head,int *arr,int num);
bool inclusion(link ha,link hb);
//int arr1[]={ 3,5,8,11};
//int arr2[]={2,6,8,9,11,15,20};
int arr1[]={4,9};
int arr2[]={3,4,4,5,7,9};
link la,lb;
create(la,arr1,2);
create(lb,arr2,6);
if(inclusion(la,lb))
printf("\n鏄痋n");
printf("\n");
system("pause");
}
void create(link &head,int *arr,int num)
{ link ptr;
head=(link ) malloc(sizeof(struct node));
if(head==NULL)
{
exit(1);
}
head->next=NULL;
ptr=head;
for(int i=0;i
ptr->next=(link ) malloc(sizeof(struct node));
if(ptr->next==NULL)
{
exit(1);
}
ptr->next->next=NULL;
ptr->next->data=arr[i];
ptr=ptr->next;
}
}
bool inclusion(link ha,link hb)
{
link pa,pb;
pa=ha->next;
pb=hb->next;
while(pa && pb)
{
if(pa->data==pb->data)
{
pa=pa->next;
pb=pb->next;
}
else
pb=pb->next;
}
if(pa==NULL)
return true;
else
return false;
}
看了 来个牛人帮我做题吧~1,假设...的网友还看了以下:
下表是元素周期表的一部分,表中的每个字母代表一种短周期元素.周期\族ⅠAⅡAⅢAⅣAⅤAⅥAⅦA0 2020-04-08 …
如表是元素周期表的一部分,表中的每个字母表示一种短周期元素,回答下列问题:HHeABCD 2020-04-08 …
如表所示是元素周期表的一部分,表中所列字母分别代表短周期中的一种元素:请回答下列问题:(1)A元素 2020-04-08 …
写关于寒假日记不能少于400字,要个人写的,不要抄别人,要5篇,急,不要外语,要汉语,(不要废话) 2020-04-27 …
下表是元素周期表的一部分,表中所列字母分别代表某一化学元素。(1)在以上字母表示的短周期主族元素中 2020-05-02 …
“半”的近义词有什么呢?最好是古文吧,表示“一半”的意思要单个字的 2020-05-14 …
电势能比大小是用代数法比较吧,正的一定大于负的,电势也一样吧如题 2020-05-20 …
下表是元素周期表的一部分.表中所列的字母分别代表一种化学元素abcdefghijklmno试回答下 2020-06-09 …
元素周期表是学习物质结构与性质的重要工具.下表是元素周期表的一部分,表中所列字母A、B、D、E、G 2020-06-09 …
下表是元素周期表的一部分,表中所列字母分别代表某一化学元素.abcdefghij(1)i是铁元素 2020-06-09 …