欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

C语言-顺序表-基本操作-将两个顺序表合并成另一个表

时间:2023-06-05

 复习C语言顺序表的知识,包括定义、创建、插入、删除、输出、合并操作。

基本思路:创建LA与LB两个顺序表,通过函数插入、删除,再合并为LC。

#include#define Max 100typedef int Datatype; typedef struct{Datatype list[Max];int size;}SeqList; void define_initial(SeqList *L){L->size=0;}int listlength(SeqList L){return L.size;}void listinsert(SeqList *L,int i,Datatype x)//将x插入i位置 {if(L->size>=Max){ printf("顺序表已满!"); return ; } else if(i<0||i>L->size){printf("插入位置不合法!"); return ; } else{for(int j=L->size;j>=i;j--){L->list[j+1]=L->list[j];}L->list[i]=x;L->size++;}}void print_L(SeqList L){for(int k=0;k= L->size) { printf("删除出错!"); return ; } else if(L->size<1) {printf("顺序表已空!"); return ; }else{for(;i<=L->size-1;i++){L->list[i-1]=L->list[i];}L->size--;}} void merge(SeqList LA,SeqList LB,SeqList *LC) {if(LA.size==0) { print_L(LB);return;}else if(LB.size==0) { print_L(LA);return;}else{int x,y,z;x=0;y=0;z=0;while(x< LA.size&&y< LB.size){if(LA.list[x]<=LB.list[y]){ LC->list[z]=LA.list[x]; x++;z++; }else{LC->list[z]=LB.list[y];z++;y++;}}if(x==LA.size&&ylist[z]=LB.list[y];z++;y++;}}if(y==LB.size&&xlist[z]=LA.list[x]; z++;x++; }}LC->size=z; }}main(){//定义LASeqList LA;define_initial(&LA);for(int i=0;i<10;i++){listinsert(&LA,i,i*i);} printf("定义LA为顺序表:n");print_L(LA);printf("LA的长度为%dn",listlength(LA));int m=3;delete_number(&LA,m);printf("删除第m个元素后,顺序表为:n");print_L(LA);printf("LA的长度为%dnn",listlength(LA));//定义LB SeqList LB;define_initial(&LB);for(int n=0;n<18;n++){listinsert(&LB,n,n*2);} printf("定义LA为顺序表:n");print_L(LB);printf("LB的长度为%dn",listlength(LB));int N=6;delete_number(&LB,N);printf("删除第N个元素后,顺序表为:n");print_L(LB);printf("LB的长度为%dnn",listlength(LB));//合并LA、LBSeqList LC;define_initial(&LC);printf("合并后的顺序表为:n");merge(LA,LB,&LC);if(LC.size>0) {print_L(LC); printf("nLC的长度为%dn",listlength(LC));}}

运行结果为:

 

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。