早教吧作业答案频道 -->其他-->
来个牛人帮我做题吧~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,假设...的网友还看了以下:
请教C程序问题编写一个完整的程序,实现顺序表的建立、插入、删除、输出等基本运算。(1)建立一个顺序 2020-06-18 …
数据结构题索引顺序表上的查找分两个阶段:(1)是——(2)是——设表中的元素的初始状态是按键值递增 2020-06-28 …
来个牛人帮我做题吧~1,假设有两个按元素值递增次序排列的线性表,均以单链表形式存储.请编写算法将这 2020-07-13 …
设X在累加器A中(0≤X≤20),求X2并将平方数高位存放在R7中,低位存放在R6中.试用查表法编 2020-07-31 …
这有三道数据结构的小问题想请教大家设初始记录关键字序列为(25,50,15,35,80,85,20, 2020-11-17 …
之前看到的给定有序表A[1:n],修改合并排序算法,求出该有序表的逆序对数?的回答我想知道那么,可以 2020-11-20 …
张老师编写了5道例题,并将这5道例题ABCDE按照例1-例5依次排好了顺序.第二天觉得顺序不合适,又 2020-11-28 …
内部排序算法比较(1)对以下7种常用的内部排序算法进行比较:起泡排序、直接插入排序、简单选择排序、快 2020-11-28 …
排序题。。。。在待排序文件已基本有序的前提下,下列排序方法中效率最高的是()。A)直接插入排序B)直 2020-11-28 …
已有a,b两个链表,要求把两个链表合并并升序排列。假定给定的a、b为升序排列。输入时,首先输入两个数 2020-12-05 …