将x插入到顺序表中保持顺序表的递增有序
2017-10-26 11:12
260 查看
例题:设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。
#include <stdio.h> #include <stdlib.h> #include <assert.h> //不定长顺序表,自动增长 #define INITSIZE 10 typedef struct DSeqList { int *elem;//指向存放数据的动态数组 int length;//有效数据个数 int listsize;//总容量,总格子数 }DSeqList,*PDSeqList; void InitSeqList(PDSeqList ps)//初始化顺序表 { assert(ps != NULL); if(ps == NULL) { return; } ps->elem = (int *)malloc(INITSIZE*sizeof(int)); ps->length = 0; ps->listsize = INITSIZE; } static bool IsFull(PDSeqList ps)//判满 { return ps->length == ps->listsize; } //将总容量扩大到原来的2倍 static void Inc(PDSeqList ps) { ps->elem = (int *)realloc(ps->elem,ps->listsize*2*sizeof(int)); ps->listsize *= 2; } bool Insert(PDSeqList ps,int pos,int val)//插入数据 { if(pos<0 || pos>ps->length) { return false; } if(IsFull(ps)) { Inc(ps); } for(int i=ps->length-1;i>=pos;i--)//移动后面的数据 { ps->elem[i+1] = ps->elem[i]; } ps->elem[pos] = val; ps->length++; return true; } /*顺序表中的数据元素递增有序。 试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性*/ bool Insert_x(PDSeqList ps,int x) { if(IsFull(ps)) { Inc(ps); } int i; for(i = 0;i < ps->length;i++) { if(ps->elem[i] > x) { break; } } for(int j = ps->length-1;j >= i;j--) { ps->elem[j+1] = ps->elem[j]; } ps->elem[i] = x; ps->length++; return true; } int main() { DSeqList ds1; DSeqList ds2; InitSeqList(&ds1); InitSeqList(&ds2); for(int i = 0;i < 10;i++) { Insert(&ds1,i,i); Insert(&ds2,i,i); } Show(&ds1); Show(&ds2); //测试用例 Insert_x(&ds1,5); Insert_x(&ds1,-1); Insert_x(&ds1,23); Show(&ds); return 0; }
相关文章推荐
- 在一个递增有序链表中插入新结点并保持链表递增顺序不变
- 往一递增有序的顺序表中插入x,仍保持气有序性
- 已知顺序表L递增有序,写一算法,将X插入到线性表的适当位置,以保持线性表的有序
- 已知顺序表L递增有序,写一算法,将X插入到线性表的适当位置,以保持线性表的有序
- 已知顺序表L递增有序,写一算法,将X插入到线性表的适当位置,以保持线性表的有序
- 设顺序表a中的数据元素递增有序,试设计一个算法,将x插入到顺序表的适当位置,以保持该表的有序性。
- 设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性
- 数据结构 2-11设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。
- 五个数由大到小排列,插入一个数,顺序保持有序
- (顺序有序表)插入元素
- c语言:顺序表的实现(三)将元素e插入到一个递减有序表中,不改变顺序表的递减有序性。
- 6-2 有序顺序表的插入
- Problem Description 有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。 Input 输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数
- OrderedDict 有序字典以及读取json串时如何保持原有顺序
- 假设以两个元素依值递增有序排列的线性表A和B分别表示两个集合,现要求另辟空间构成一个顺序链表C
- 顺序表的创建,插入,删除,查找,逆序以及合并两个有序的顺序表
- 005_007 Python 插入元素并保持顺序,取得最小的元素
- 有序顺序表的插入
- Problem Description 有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。 Input 输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义
- oracle数据库并不保证sequence生成顺序与的数据插入顺序的保持一致。