急需数据结构算法:假设有两个元素递增的有序排列线性表A和B,均以单链表作存储结构.试编写算法将A表和B急需数据结构算法C++版:假设有两个元素递增的有序排列线性表A和B,均以单链表作
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/22 14:06:20
急需数据结构算法:假设有两个元素递增的有序排列线性表A和B,均以单链表作存储结构.试编写算法将A表和B急需数据结构算法C++版:假设有两个元素递增的有序排列线性表A和B,均以单链表作
急需数据结构算法:假设有两个元素递增的有序排列线性表A和B,均以单链表作存储结构.试编写算法将A表和B
急需数据结构算法C++版:假设有两个元素递增的有序排列线性表A和B,均以单链表作存储结构.试编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序)允许值相同排列的线性表C,并要求按原表的结点空间存放表C.可能用到归并排序、头插法、友元函数、不带头结点
急需数据结构算法:假设有两个元素递增的有序排列线性表A和B,均以单链表作存储结构.试编写算法将A表和B急需数据结构算法C++版:假设有两个元素递增的有序排列线性表A和B,均以单链表作
#include"stdio.h"
#include"malloc.h"
struct list
{
int data;
struct list *next;
};
struct list *head1,*head2,*p1,*p2,*q1,*q2;
void main()
{
int n=0;
void unionlist();
p1=q1=(struct list*)malloc(sizeof(struct list));
printf("请输入第一个链表的信息\n");
scanf("%d",&p1->data);
while(p1->data!=0)
{
n=n+1;
if(n==1)
head1=q1;
else
q1->next=p1;
q1=p1;
p1=(struct list*)malloc(sizeof(struct list));
scanf("%d",&p1->data);
}
q1->next=NULL;
n=0;
p2=q2=(struct list*)malloc(sizeof(struct list));
printf("请输入第二个链表的信息\n");
scanf("%d",&p2->data);
while(p2->data!=0)
{
n=n+1;
if(n==1)
head2=q2;
else
q2->next=p2;
q2=p2;
p2=(struct list*)malloc(sizeof(struct list));
scanf("%d",&p2->data);
}
q2->next=NULL;
unionlist();
}
void unionlist()
{
struct list *head,*p;
int i=0;
p1=head1;
p2=head2;
head=p=(struct list*)malloc(sizeof(struct list));
p->data=0;
while(p1 && p2)
{
if(p1->datadata)
{
p->next=p1;
p=p1;
p1=p1->next;
}
else
{
p->next=p2;
p=p2;
p2=p2->next;
}
}
p->next=p1?p1:p2;
p=head;
printf("合并后的链表为如下:\n");
while(p)
{
i=i+1;
if(i==1)
p=p->next;
printf("%3d",p->data);
p=p->next;
}
printf("\n");
free(head1);
free(head2);
}