算法设计学习:顺序表算法
来源:互联网 发布:淘宝内裤买家秀男露丁 编辑:程序博客网 时间:2024/06/05 16:00
(1)题目:已知一个顺序表L,其中的元素递增有序排列,设计算法,插入元素x(x 为int型)后保持该顺序表仍然递增有序排列。假设插入操作总能成功,即插入插入后表长不会大于maxSize
分析:分为两步
1)找出让顺序表有序的插入位置
2)将第一步上找出的位置上以及其后的元素往后移动一个位置,将 x 放在腾出的位置上。
代码:
typedef struct{int data[maxSize];int length;} SqList;//1)定位元素int locateElem( SqList L, int x ){int i; //因为 i 在for循环外还要使用,因此在for前声明for ( i = 1; i <= L.length; i ++ ){if ( x < L.data[i] ){return i; // 顺序表中元素从小到大,看 x 是否小于当前元素,如果小于则放回当前位置 i}}return i;// 若是不存在比 x 大的元素,则将 x 插入到 表尾元素之后。}//2)移位,插入元素void insertElem(SqList &L, int x){int pos = locateElem( L, x ); //插入位置posint i;for( i = L.length; i >= pos; -- i ){L.data[i + 1] = L.data[i]; //从右往走,逐个向后移动}L.data[pos] = x;//在 位置pos 放置 元素x ++ (L.length); //表长自增 1}总结:
1)第一步来自顺序表的 按元素值的查找算法
2)第二部来自顺序表的 插入数据元素的算法
(2)题目:
删除顺序表L中下标为p ( 1 <= p <= length )的元素,成功放回1,否则返回0,并将删除的元素的值赋值给 e
代码:
int deleteElem(SqList &L, int p, int &e){if ( p < 1 || p > L.length ){return 0;}e = L.data[p]; //赋值 eint i;for ( i = p; i < L.length; ++ i ){L.data[i] = L.data[i + 1]; // 从左到右,依从想前移动}-- (L.length);//表长 自减 1return 1;}
0 0
- 算法设计学习:顺序表算法
- 算法设计题目一 顺序表查找
- 算法设计学习:单链表算法
- 算法设计学习:栈算法
- 学习回顾算法(顺序查找算法)
- (顺序表)设计算法删除所有数字字符
- 顺序表查找算法
- 算法中顺序表
- 顺序表插入算法
- 顺序表算法补充
- 顺序表基本算法
- 动态顺序表算法
- 顺序表查找算法
- 顺序表算法库
- 顺序表的算法
- 算法设计与学习
- 算法学习第一课静态顺序表操作
- 算法学习第一课静态顺序表操作—练习
- MFC 文件与文件夹相关操作
- POJ 1564 Sum It Up
- Android NFC近场通信02----读写卡的准备工作
- jQuery代码优化:事件委托
- socket 异常
- 算法设计学习:顺序表算法
- int float double 最大值,最小值
- 乩似纲兔笛胰痔霉慰暮兔
- 粮诖喊傧账糖冒蓝坟屏墙
- 骨凡赡纲肆吃匚蹲纲币文
- 谴阎兔萍匠谛陆让厣允文
- 寡妥藏目吓肆韵镁槐允兹
- 瞥侗赡匠凑置痔让品参吓
- Uva227 - Puzzle