2020考研数据结构算法实现 顺序表系列操作

将两个有序的顺序表合并成一个新的有序顺序表


#include<stdio.h>
#include<malloc.h>
#define maxSize 10

//typedef int ElemType
 typedef struct Sqlist
{	
	int data[maxSize];
	int length;
	int maxsize;
	
}Sqlist;

bool merge(Sqlist A,Sqlist B,Sqlist &C)
{
	if(A.length+B.length>C.maxsize)
		return false;
	int i=0,j=0,k=0;
	while(i<A.length&&j<B.length){
		if(A.data[i]<=B.data[j])
			C.data[k++]=A.data[i++];
		else
			C.data[k++]=B.data[j++];
	}
	while(i<A.length)
		C.data[k++]=A.data[i++];
	while(j<B.length)
		C.data[k++]=B.data[j++];	
	C.length=k;
	return true;	
}
void display(Sqlist &L)
{
	for(int i=0;i<L.length;i++)
  	{
    	printf("第%d的元素为:%d\n",i+1,L.data[i]);
	}
	 
} 
int initSqlist(Sqlist &L){
	int n;
	 printf("顺序表要输入的个数:");
	 scanf("%d",&n);
	 printf("\n");
	 L.length=n;
	 for(int i=0;i<n;i++){
	 	printf("输入第%d个元素:",i+1);
	 	scanf("%d",&L.data[i]);
	 }
	 return 1;
}
int main()
{
	Sqlist A;
	Sqlist B;
	Sqlist C;
	printf("顺序表A:\n");
	initSqlist(A);
	printf("顺序表B:\n");
	initSqlist(B);
   		 
    printf("之前的元素:\n"); 
    printf("顺序表A的元素:\n");
	display(A);
	printf("顺序表B的元素:\n");
	display(B);
	printf("合并之后的顺序表C:\n");
	C.maxsize=20;
	merge(A,B,C);
	display(C);
	
	 
	return 0;
}

截图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值