数据结构整理_有序顺序表合并
2015-05-20 23:24
274 查看
整理了一下顺序表的合并,挺简单的算法。用的VC++6.0整理代码!
// 整理_有序顺序表合并.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <stdlib.h> #define INIT_LEN 30 #define ELEM_LEN 60 typedef int ElementType; typedef struct SeqList { ElementType *data; int len; int cap; }SeqList; void Merge(SeqList la, SeqList lb, SeqList *lc); void InitList(SeqList *p); void Create(SeqList *p, ElementType data[], int n); void Destroy(SeqList *p); int main(int argc, char* argv[]) { SeqList la, lb, lc; ElementType a[] = {1, 3, 7, 9, 12, 17, 22, 89, 99, 123}; ElementType b[] = {3,7,13,25,56,999}; Create(&la, a, sizeof(a)/sizeof(a[0])); Create(&lb, b, sizeof(b)/sizeof(b[0])); InitList(&lc); Merge(la, lb, &lc); Destroy(&la); Destroy(&lb); Destroy(&lc); return 0; } void Merge(SeqList la, SeqList lb, SeqList *lc) { int i = 0, j = 0, k = 0; while(i<la.len && j<lb.len) { if(la.data[i] <= lb.data[j]) { lc->data[k++] = la.data[i++]; } else { lc->data[k++] = lb.data[j++]; } } while(i<la.len) { lc->data[k++] = la.data[i++]; } while(j<lb.len) { lc->data[k++] = lb.data[j++]; } lc->len = k; } void InitList(SeqList *p) { p->data = (ElementType *)malloc(sizeof(ElementType) * INIT_LEN); p->len = 0; p->cap = INIT_LEN; } void Create(SeqList *p, ElementType data[], int n) { int i = 0; InitList(p); for(i=0; i<n; i++) { p->data[i] = data[i]; } p->len = n; } void Destroy(SeqList *p) { free(p->data); p->len = 0; p->cap = 0; }如果读者发现代码有错,请务必告知于我!
相关文章推荐
- 【数据结构】-线性表-顺序表-1324: 算法2-2:有序线性表的有序合并
- 数据结构整理_有序链表合并
- 2-11. 两个有序链表序列的合并(15):链表数据结构基础练习
- 有序链表的合并(数据结构---单链表)
- 数据结构 02-线性结构1 两个有序链表序列的合并
- 数据结构之将两个递增的有序链表合并为一个递增的有序链表
- 数据结构 链表 合并两个有序的单链表 C语言版
- 数据结构 — 1. 两个非递减有序单链表合并为非递增有序单链表
- C语言实现合并两个有序(从小到大)顺序表为一个顺序表
- 【数据结构练习】2.两个有序链表序列的合并
- 数据结构-----顺序表合并2
- 有序顺序表合并
- [数据结构]合并有序数组
- 数据结构-剑指offer-合并有序链表
- 两个有序顺序表合并
- C语言 合并有序顺序表
- 考研数据结构之有序数组高效合并
- java实现数据结构-线性表-顺序表,实现插入,查找,删除,合并功能
- 数据结构--合并顺序表
- [数据结构]02-线性结构1 两个有序链表序列的合并