顺序表应用5:有序顺序表归并
来源:互联网 发布:哈利波特英文版 知乎 编辑:程序博客网 时间:2024/05/21 17:05
以上为题目。
归并和链表的归并相通,可相互印证理解、
下面为代码:
#include <stdio.h>#include <stdlib.h>#define List_init_size 10000typedef int Element;typedef struct{ Element *elem; int length; int listsize;}Sqlist;int Initlist(Sqlist *L)//一如既往的初始化初始化顺序表{ L->elem=(Element *)malloc(List_init_size*sizeof(Element)); if(!L->elem)return -1; L->length=0; L->listsize=List_init_size;}int Initlist1(Sqlist *L)//一如既往的初始化顺序表{//注意新表长度为原来两表长度的两倍,需重新分配储存容量 L->elem=(Element *)malloc(2*List_init_size*sizeof(Element)); if(!L->elem)return -1; L->length=0; L->listsize=List_init_size;}void Createlist(Sqlist *L,int m)//输入函数{ int i; for(i=0;i<m;i++) { scanf("%d",&L->elem[i]); } L->length=m;}int Listinsert(Sqlist *L,int k,int e){//将元素e插入到第k个元素之前 if(k<1||k>L->length+1)return -1;//判断插入位置的合法性 int j; int pos=k; for(j=L->length-1;j>=pos-1;j--) {//从最后一个位置开始移位,将需要插入的位置空出 L->elem[j+1]=L->elem[j]; } L->elem[pos-1]=e; L->length++;//每插入一个元素,顺序表长度加一,勿忘 return 1;}void Mergelist(Sqlist *A,Sqlist *B,Sqlist *C){//需要合并的两表A和B,新表C Initlist1(C);//初始化C int i=1,j=1; int k=0;//k从0开始,为了下面方便 int len_a=A->length,len_b=B->length; while((i<=len_a)&&(j<=len_b)) {//只要有一个表已经遍历完毕,即可跳出循环 if(A->elem[i-1]>B->elem[j-1]) { Listinsert(C,++k,B->elem[j-1]); j++; } else { Listinsert(C,++k,A->elem[i-1]); i++; } } while(i<=len_a)//若A没有遍历完,则将A插入到新表后面 { Listinsert(C,++k,A->elem[i-1]); i++; } while(j<=len_b)//与上面同理 { Listinsert(C,++k,B->elem[j-1]); j++; }}void Display(Sqlist *L)//输出函数{ int i; for(i=0;i<L->length;i++) { printf(i==(L->length-1)?"%d\n":"%d ",L->elem[i]); }}int main(){ int m,n; Sqlist A,B,C; scanf("%d%d",&m,&n); Initlist(&A); Initlist(&B); Createlist(&A,m); Createlist(&B,n); Mergelist(&A,&B,&C); Display(&C); return 0;}
此代码在codeblocks环境中运行。
1 0
- 顺序表应用 有序顺序表 归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 【3329】顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- sdut oj3329 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- SDUT3329顺序表应用5:有序顺序表归并
- 时间加减
- c++避免内存泄漏
- PayDemo - 支付宝和微信支付两种方式集成
- poj3080 Blue Jeans(串的暴力枚举)
- 事件09
- 顺序表应用5:有序顺序表归并
- c#怎么将string隐式转换为char C#中char[]与string之间的转换 C# list与数组转换
- 【javase复习】## day9 静态导入 增强for循环 枚举类 ##
- KMP算法详解与模板
- 如何同时引入两个jquey版本并不冲突呢
- 博客第一篇文章
- [HDU 5452] Minimum Cut (树链剖分+树状数组)
- hdu 5795A Simple Nim SG函数(多校)
- MATLAB运算符