第一章---线性表之顺序表 合并顺序表

#include <iostream>
#define MAXSIZE 100
using namespace std;
typedef int DataType;   //使int重命名为DataType 
typedef struct{
	DataType data[MAXSIZE];  //定义DataType为int ,存储结构为顺序存储 
	int length; 
}SeqList; 

/*
问题描述:有序的线性表A,B,把他们合并成C并且还是从小到大有序
*/ //创建顺序表 void create_List(SeqList &L){ cout<<"请输入要输入的数据个数:"; cin>>L.length; cout<<"请输入要输入的数据:"<<"\n"; for(int i=0;i<L.length;i++){ cin>>L.data[i]; } } //输出顺序表中的元素 void out_List(SeqList &L){ //判断线性表是否为空 if(L.length != 0){ for(int i=0;i<L.length;i++){ cout<<L.data[i]<<" "; } }else{ cout<<"线性表为空"<<"\n"; } } //将有序的顺序表A,B合并成C void merge(SeqList &A,SeqList &B,SeqList &C){ int i,j,k; i=0;j=0;k=0; while(i<A.length && j<B.length){ if(A.data[i]>=B.data[j]){ C.data[k]=B.data[j]; j++; k++; }else{ C.data[k]=A.data[i]; i++; k++; } } while(i<A.length){ C.data[k]=A.data[i]; k++; i++; } while(j<B.length){ C.data[k]=B.data[j]; k++; j++; } C.length=A.length+B.length; } int main(int argc, char** argv) { SeqList A,B,C; create_List(A); create_List(B); out_List(A); cout<<"\n"; out_List(B); cout<<"\n"; merge(A,B,C); out_List(C); cout<<"\n"; return 0; }

  

posted @ 2021-02-04 12:34  nanfengnan  阅读(84)  评论(0编辑  收藏  举报