我是靠谱客的博主 粗暴薯片,最近开发中收集的这篇文章主要介绍c语言组合数3066,顺序表合并算法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题描述:有两个顺序表LA和LB,其元素均为递增有序排列,编写算法,将两个有序列表合并成一个有序的顺序表LC。

思路:先将两个表作比较,输出数字较小的一方,当有一个表已经全部输出后,将另外一个表的剩下的值原封不动的赋给LC

C语言代码段:

//===============================================================

//Summary:

// C语言 类

//FileName:

// C语言.c

//Remarks:

// 数据结构-合并算法(合并两个顺序表)

//Date:

// 2019/8/4 15:25

//Author:

// 张珂(1575595743@qq.com)

//Version:

// 1.0

//===============================================================

#include

#include

//定义数据结构,length为顺序表实际元素个数

#define MAXSIZE 50

typedef struct

{

int elem[MAXSIZE];

int length;

}SeqList;

//------------------创建顺序表------------------

void creat(SeqList *s)

{

int n, len, i;

printf("输入顺序表的长度:n");

scanf("%d", &len);

s->length = len;

printf("输入顺序表的元素:n");

for (i = 0; i < len; i++)

{

scanf("%d", &n);

s ->elem[i] = n;

}

}

//--------------------合并算法--------------------

void merge(SeqList *LA, SeqList *LB, SeqList *LC)

{

int i, j, k;

i = 0; j = 0; k = 0;

while (i < LA->length && j < LB->length)

{

if (LA->elem[i] <= LB->elem[j])

{

LC->elem[k] = LA->elem[i];

i++; k++;

}

else

{

LC->elem[k] = LB->elem[j];

j++; k++;

}

}

//当表LA比表LB长时,将表LA剩下的元素赋给表LC

while (i < LA->length)

{

LC->elem[k] = LA->elem[i];

i++; k++;

}

while (j < LB->length)

{

LC->elem[k] = LB->elem[j];

j++; k++;

}

LC->length = LA->length + LB->length;

}

//--------------------输出所有元素--------------------

void print(SeqList *L)

{

int i;

if (L->length == 0) return;

for (i = 0; i < L->length; i++)

printf("%d ", L->elem[i]);

printf("n");

}

int main()

{

SeqList LA, LB, LC;

creat(&LA);

creat(&LB);

print(&LA);

print(&LB);

merge(&LA,&LB,&LC);

print(&LC);

return 0;

}

最后

以上就是粗暴薯片为你收集整理的c语言组合数3066,顺序表合并算法的全部内容,希望文章能够帮你解决c语言组合数3066,顺序表合并算法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部