数据结构题典001:有序线性表的归并(ANSI C)
2011-12-24 22:14
204 查看
1、有序顺序表的归并排序,假设a[0] <= a[1] <= ... <= a[n-1]
void merge_list( int a[], int m, int b[], int n, int ** c ) { int i = 0, j = 0; int *pa = a, *pb = b, *pc = NULL, *qa = a + m - 1, *qb = b + n - 1; if( *c != NULL ) free( *c ); *c = ( int * )malloc( sizeof( int ) * ( m + n ) ); assert( *c != NULL ); pc = *c; while( pa <= qa && pb <= pb ) *pc++ = ( *pa <= *pb ) ? *pa++ : *pb++; while( pa <= qa ) *pc++ = *pa++; while( pb <= qb ) *pc++ = *pb++; }2、有序单链表的归并排序,假设a[0] <= a[1] <= ... <= a[n-1]
typedef int elem_type; struct node; typedef struct node node; typedef node * node_ptr; typedef node * link_list; struct node { elem_type data; node_ptr next; }; void merge_list( link_list * lst_a, link_list * lst_b, link_list * lst_c ) { node_ptr pa = (*lst_a)->next, pb = (*lst_b)->next, pc; *lst_c = pc = *lst_a; while( pa != NULL && pb != NULL ) { if( pa->data <= pb->data ) { pc->next = pa; pc = pa; pa = pa->next; } else { pc->next = pb; pc = pb; pb = pb->next; } } pc->next = ( pa == NULL ) ? pb : pa; free( *lst_b ); }
相关文章推荐
- 数据结构之有序链表归并算法1
- 线性表LA和LB非递减有序排列,将LA,LB进行归并为新的线性表LC,要求LC中的数据元素扔非递减有序列排列
- 要完整准确的 均以单链表作存储结构 试编写算法将A表和B表归并成一个按元素值递减有序的线性表C 【数据结构】假设有两个按元素值递增有序的线性表A和B 并要求利用原表的空间存放C。谁会么
- 数据结构——线性表的建立和有序输出
- 数据结构 02-线性结构1 两个有序链表序列的合并
- 数据结构_两个有序单链表归并C语言源代码
- [数据结构]02-线性结构1 两个有序链表序列的合并
- 数据结构_两个有序链表归并成新的链表(基于头插法建表与尾插法建表)
- PAT数据结构_02-线性结构1 两个有序链表序列的合并 (15分)
- [SDUT](3329)顺序表应用5:有序顺序表归并 ---有序表归并(线性表)
- [SDUT](2119)数据结构实验之链表四:有序链表的归并 ---有序表归并(线性表)
- 【数据结构】-线性表-顺序表-1324: 算法2-2:有序线性表的有序合并
- 数据结构顺序表应用5:有序顺序表归并
- 第2章 线性表——有序链表的归并
- 数据结构【线性表(二)链表】项目之合并有序表
- 02-线性结构1 两个有序链表序列的合并——中国大学MOOC-陈越、何钦铭-数据结构-2017秋
- 数据结构【线性表(二)链表】项目之合并有序表(解法二)
- 数据结构-C语言 单链线性表实现归并 C=A∪B
- 数据结构-数组排序(冒泡 选择 插入 归并(合并有序数组))-C语言
- 数据结构题典003:线性表的就地逆置/翻转(ANSI C)