早教吧作业答案频道 -->其他-->
来个牛人帮我做题吧~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,假设...的网友还看了以下:
二次函数求值公式假如遇见一个二次函数:y=-2x的平方+5x+9;求X1、X2怎么算啊? 2020-03-30 …
政治经济学(资本主义)多选题3、在简单的价值形式中,等价形式所具有的特征是:()A、使用价值成为价 2020-04-26 …
进制转换假设我们用12-bit来表达一个整数,请将10进位的-375以下列方式表达成二进制:假设我 2020-05-20 …
假设定义:int x=3,y=3;则复合赋值表达式x/=1+y 的值为(51)。A.0B.0.75C 2020-05-26 …
帮忙造个句子句式假如不要,不要需要.相信吧,.和普希金的《假如生活欺骗了你》的格式差不多假如*** 2020-06-09 …
excel表内,假如有两列,A列有a1,a2,a1,a3,a3,B列有数值2,3,4,5,6,如何 2020-07-23 …
假言命题的真值表中的真和假各表示什么意思?比如说:充分条件的假言命题的真值表是如果p,那么q真真真 2020-08-01 …
在价值形式的发展中,一般价值形式是?在价值形式的发展中,一般价值形式是()A、一切商品的价值都表现在 2020-11-07 …
逻辑里的“蕴涵”怎么理解?真值表上说当且仅当P假Q真时,P对Q的蕴涵为假,请问真值表该怎么理解?如果 2020-12-02 …
如果┐p←q取值为假,┐p取值为假,则q为真还是假?我的答案是真,但是书本上参考答案为假,哎我的答案 2020-12-04 …