数据结构——顺序有序表合并完整代码

        作为一个数据结构的初学者,通过搜集资料,非常不容易做出了顺序有序表合并的完整代码

以下是本人敲出来的结果:

        如果有错误,希望指正,不过是能运行成功得哦!

#include<iostream>
using namespace std;

typedef int Elemtype;
typedef int Status;

#define OK 1
#define OVERFLOW -2
#define maxsize 100

typedef struct
{
	Elemtype *elem;
	int length;
}Sqlist;        //动态分配数组空间 

Status InitList(Sqlist &L)
{
	L.elem=new Elemtype[maxsize];
	if(!L.elem) exit(OVERFLOW);
	L.length=0;
	return OK;
}//初始化,构造一个空的顺序表的函数 

void input(Sqlist &La,Sqlist &Lb,int m,int n)
{
	int i;
	La.length=m;
	Lb.length=n;
	cout<<"first la:"<<endl;
	for(i=0;i<La.length ;i++)
	{
		cin>>La.elem[i];
	}
	cout<<"next lb:"<<endl;
	for(i=0;i<Lb.length ;i++)
	{
		cin>>Lb.elem[i];
	}
}//往顺序表里填内容 

void show(Sqlist L)
{
	int i;
	for(i=0;i<L.length;i++)
	{
		cout<<L.elem[i]<<" ";
	} 
}//输出线性表内容的函数 

void MergeList_Sq(Sqlist La,Sqlist Lb,Sqlist &Lc)
{
	Lc.length =La.length +Lb.length ;
	Lc.elem=new Elemtype[Lc.length];
	int *pa,*pb,*pc,*pa_last,*pb_last;
	pa=La.elem;
	pb=Lb.elem;
	pc=Lc.elem;
	pa_last=pa+La.length-1;
	pb_last=pb+Lb.length-1;
	while(pa<=pa_last&&pb<=pb_last)
	{
		if(*pa<=*pb)
		{
			*pc++=*pa++;
		}
		else
			*pc++=*pb++;
	}
	while(pa<=pa_last) *pc++=*pa++;
	while(pb<=pb_last) *pc++=*pb++;
}//合并的函数 

int main()
{
	int m,n;
	Sqlist La;
	Sqlist Lb;
	Sqlist Lc;
	InitList(La);
	InitList(Lb);
	cout<<"la元素个数:"<<"\n";
	cin>>m;
	cout<<"lb元素个数:"<<"\n";
	cin>>n;
	input(La,Lb,m,n);
	MergeList_Sq(La,Lb,Lc);
	show(Lc);
	return 0;
}

以上便是数据结构——顺序有序表合并完整代码,希望能给初学者拨开一点迷雾。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值