【C语言】顺序表并集与归并
来源:互联网 发布:matlab 2017b mac 编辑:程序博客网 时间:2024/05/01 22:17
顺序表交集与归并
测试用例: a[] = {3, 5, 6, 11};
b[] = {2, 6, 8, 9, 11, 15, 20};
输出结果为两个数组LA与LC,其中LA表示a[]
与b[]
的并集,LC表示a[]
与b[]
的归并。
#include "stdio.h"#include "stdlib.h"#include "malloc.h"#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define MAXLISTSIZE 20#define MAXLISTNUMBER 20typedef int Status;typedef int ElemType;typedef struct { int data[MAXLISTSIZE]; int length;}List;List La,Lb,Lc;List CreateList(int temp[], List La, int n);void Union(List La, List Lb);int IsEqual(int a, int b);List UnionND(List La, List Lb);void BucketSort(List L);int main(){ int temp_a[] = {3,5,8,11}; int temp_b[] = {2,6,8,9,11,15,20}; La = CreateList(temp_a, La, sizeof(temp_a)/sizeof(int)); Lb = CreateList(temp_b, Lb, sizeof(temp_b)/sizeof(int)); Union(La, Lb); Lc = UnionND(La, Lb); BucketSort(Lc); return 0;}List CreateList(int temp[], List La, int n){ for(int i = 0; i < n; i++){ La.data[i] = temp[i]; La.length = i+1; } return La;}void Union(List La, List Lb){ int flag = 0; for(int i = 0; i < Lb.length; i++){ for(int j = 0; j < La.length; j++){ if(IsEqual(Lb.data[i], La.data[j])) flag = 1; } if(!flag){ La.data[La.length++] = Lb.data[i]; } flag = 0; } printf("LA = ("); for(int k = 0; k < La.length; k++)printf("%d ",La.data[k]); printf(")"); printf("\n");}int IsEqual(int a, int b){ if(a == b)return 1; else return 0;}List UnionND(List La, List Lb){ for(int i = 0; i < Lb.length; i++){ La.data[La.length++] = Lb.data[i]; } return La;}void BucketSort(List L){ int Bucket[MAXLISTNUMBER+1]; for(int i = 0; i < MAXLISTNUMBER+1; i++) Bucket[i] = 0; for(int j = 0; j < L.length; j++) Bucket[L.data[j]]++; printf("LC = ("); for(int k = 0; k < MAXLISTNUMBER+1; k++) for(; Bucket[k] > 0; Bucket[k]--) printf("%d ",k); printf(")");}
实验截图如下
2 0
- 【C语言】顺序表并集与归并
- 【C语言】链表并集与归并
- c语言归并、选择、直接插入、冒泡、快速、堆排序与顺序、二分查找
- 数据结构-C语言 顺序表实现归并 C=A∪B
- 数据结构-C语言 顺序表实现归并 C=A∪B II
- 【C语言】顺序表
- 顺序表 - C语言
- C语言:顺序表
- C语言顺序表
- C语言顺序表
- c语言顺序表的实现与基本操作
- 静态与动态顺序表操作的C语言实现
- 归并排序C语言
- C语言归并算法
- 归并排序C语言
- C语言 归并排序
- 【顺序表】 c语言的顺序表
- C语言之优先级与运算顺序
- 动态include与静态include的区别
- 深入字节码 -- 计算方法执行时间(ONE APM基础原理窥探)
- 【前端笔试题】数组去重
- AngularJS入门(10)-Angular事件
- 一部分常用的正则表达式代码
- 【C语言】顺序表并集与归并
- 第10周 项目2- 二叉树遍历的递归算法
- Android DrawText 基线的确定问题
- svn合并的一些坑
- path与classpath区别
- 第10周项目3-利用二叉树遍历思想解决问题
- 单例模式、双检测锁定DCL、volatile(转)
- Perl常用lib索引
- openlayers cgi proxy跨域问题总结