数据结构——顺序表合并(C语言实现)"/>
数据结构——顺序表合并(C语言实现)
好久没来写博客了,最近开学社团的事情比较忙,然后之后的博客可能写数据结构和算法方面的比较多。
————————————————假装自己是分割线——————————————————
这里是将有序(从小到大)顺序表A,B 合并为一个有序(由小到大)顺序表C
#define MAXSIZE 100
#include<stdio.h>// 定义数据结构,size为顺序表实际元素个数
typedef struct {int m[MAXSIZE];int size;
}list;//创建
void creat(list *s)
{int n, len;printf("输入顺序表的长度:");scanf("%d", &len);s->size = len;printf("输入顺序表的元素:");for (int i = 0; i < len; i++){scanf("%d", &n);s->m[i] = n;}
}//输出
void print(list *s)
{for (int i = 0; i < s->size; i++)printf("%d ", s->m[i]);printf("\n");
}//合并
void combine(list *a, list *b, list *c)
{int i=0, j=0, k=0; //同时扫描两个表 while(i<a->size && j<b->size) {if(a->m[i]<=b->m[j]) {c->m[k] = a->m[i]; i++; k++; }else{c->m[k] = b->m[j];j++; k++; }}//A表扫完,B组未扫完 if(i==a->size) {for(; j<b->size; j++){c->m[k] = b->m[j];k++; } }if(j==b->size) {for(; i<a->size; i++){c->m[k] = a->m[i];k++; } }c->size=k;
}int main()
{list a;list b;list c;creat(&a);creat(&b);print(&a);print(&b);combine(&a,&b,&c);print(&c);
}
更多推荐
数据结构——顺序表合并(C语言实现)
发布评论