C语言顺序表,合并并排序(代码注释讲解)
【摘要】
/*.已知有两个按元素值递增有序的顺序表A和B,设计一个算法将表A和表B的全部元素归并为一个按元素值非递减有序的顺序表C。
要求:
从键盘输入顺序表A和B的各元素,编程实现上述算法,输出顺序表A、顺序表B...
/*.已知有两个按元素值递增有序的顺序表A和B,设计一个算法将表A和表B的全部元素归并为一个按元素值非递减有序的顺序表C。
要求:
从键盘输入顺序表A和B的各元素,编程实现上述算法,输出顺序表A、顺序表B和顺序表C 的所有元素值 。*/
#include<stdio.h>
#include <stdlib.h>
#include<iomanip>
#include<iostream>
#pragma warning(disable:4996)
typedef int ElemType;
#define MAXSIZE 100
typedef struct shun
{
ElemType data[MAXSIZE];
int len;
}SqList;
void Mergelist_sq(SqList La, SqList Lb, SqList& Lc)//合并算法
{
int i = 0, j = 0, k = 0;
while (i < La.len && j < Lb.len)//当两个表都为扫描完的时候
{
if (La.data[i] < Lb.data[j])//如果表A的数据比表B的数据小
{
Lc.data[k] = La.data[i]; //把小的那个丢到C里面
i++;//表A的位置也要+1,挪到下一个位置
k++;//移动过去了,长度肯定+1
}
else if (La.data[i] > Lb.data[j])//同理
{
Lc.data[k] = Lb.data[j];
j++;
k++;
}
else//等于情况咯,两个都可以移动过去
{
Lc.data[k] = La.data[i]; i++; k++;
Lc.data[k] = Lb.data[j]; j++; k++;
}
}
while (i < La.len)//如果前面几次的移动还没移动完A,剩下的再插到C中
{
Lc.data[k] = La.data[i]; i++; k++;//为什么i,k加一?同上
}
while (j < Lb.len)//同理
{
Lc.data[k] = Lb.data[j]; j++; k++;
}
Lc.len = k;// C顺序表合并后的实际长度
}
int main()//编写主函数,传入数据
{
SqList sqa, sqb, sqc;//定义结构体变量
int a, b;
printf("请输入顺序表A的元素个数:");
scanf_s("%d",&a);
printf("请输入顺序表A的数据:");
for (int i = 0; i < a; i++)//依次输入A数据
{
scanf_s("%d", &sqa.data[i]);
}
sqa.len = a;//A顺序表的长度
printf("A顺序表的长度为:%d\n", sqa.len);
printf("请输入顺序表B的元素个数:");
scanf_s("%d",&b);
printf("请输入顺序表B的数据:");
for (int j = 0; j <b; j++)//依次输入B数据
{
scanf_s("%d", &sqb.data[j]);
}
sqb.len = b;//B顺序表的长度
printf("B顺序表的长度为:%d", sqb.len);
printf("\n");
Mergelist_sq(sqa, sqb, sqc);//A,B的数据有了,调用函数把这两个表合并到空顺序表C中,C是空!!
printf("A顺序表的元素为:");
for (int i = 0; i <sqa.len; i++)
{
printf("%d", sqa.data[i]);
}
printf("\n");
printf("B顺序表的元素为:");
for (int j = 0; j <sqb.len; j++)
{
printf("%d", sqb.data[j]);
}
printf("\n");
printf("C顺序表的元素为:");
for (int n = 0; n < sqc.len; n++)
{
printf("%d", sqc.data[n]);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
有兴趣一起学习欢迎加群:
970353786
- 1
文章来源: chuanchuan.blog.csdn.net,作者:川川菜鸟,版权归原作者所有,如需转载,请联系作者。
原文链接:chuanchuan.blog.csdn.net/article/details/115298914
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)