数据结构(王道)【线性表】【算法1.1-1.2】
2016-06-30 17:17
309 查看
题目和答案来自数据结构(王道)线性表
题目:从顺序表中删除具有最小值元素(假设唯一)并由函数返回被删除元素的值。空出的位置由最后一个元素填补,若顺序表为
空则显示错误信息并退出运行。
注意:本题也可以利用函数值返回,两者的区别是:函数值返回只能返回一个值,而参数返回(引用传参)则可以返回多个值。
2.设计一个高效的算法,将顺序表的所有元素逆置,要求算法的空间复杂度为O(1)。
// 算法思想:扫描顺序表L的前半部分元素,对于元素L.datai,将其余半部分对应元素L.data[L.length-i-1]进行交换。
题目:从顺序表中删除具有最小值元素(假设唯一)并由函数返回被删除元素的值。空出的位置由最后一个元素填补,若顺序表为
空则显示错误信息并退出运行。
bool Del_Min(Sqlist &L, ElemType &value){ // 删除顺序表L中最小的元素结点,并通过引用型参数value返回其值 // 如果删除成功,返回true;否则,返回 false if (L.length == 0) return false; // 表空,终止操作返回 value = L.data[0]; int pos = 0; // 假定0号元素最小 for (int i = 1; i < L.length; i++) { if (L.data[i] < value) { // 让value记忆当前具有最小值的元素 value = L.data[i]; pos = i; } L.data[pos] = L.data[L.length - 1]; // 空出的位置由最后一个元素填补 L.length--; return true; } }
注意:本题也可以利用函数值返回,两者的区别是:函数值返回只能返回一个值,而参数返回(引用传参)则可以返回多个值。
2.设计一个高效的算法,将顺序表的所有元素逆置,要求算法的空间复杂度为O(1)。
// 算法思想:扫描顺序表L的前半部分元素,对于元素L.datai,将其余半部分对应元素L.data[L.length-i-1]进行交换。
void Reverse(Sqlist &L) { ElemType temp; for (i = 0; i < L.length / 2; i++) { temp = L.data[i]; // 交换L.data[i]与L.data[length-i-1] L.data[i] = L.data[L.length - i - 1]; L.data[L.length - i - 1] = temp; } }
相关文章推荐
- 数据结构——c语言描述 第五章 (1) 特殊矩阵的压缩存储
- OpenCV_(2):常用数据结构和函数
- 算法导论_第十章_基本数据结构
- 数据结构复习——线性表的链式存储实现(双向链表)
- 51NOD1766 树上的最远点对
- Redis内部数据结构详解(2)--sds
- 数据结构也不是那么没意思之双向循环链表
- 《数据结构》复习之线性表(顺序表和链表)
- 数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)
- 数据结构与算法简记:希尔排序
- 栈与队列-顺序栈与链栈类模板的实现(数据结构基础 第3周)
- 数据结构实验之栈一:进制转换
- Hashmap实现原理
- 数据结构实验之栈一:进制转换
- 数据结构复习——线性表的链式存储实现(单向链表)
- js 数据结构-栈与队列
- 2. Add Two Numbers
- ios开发常用的数据结构知识点
- MySQL索引背后的数据结构及算法原理
- 通用树结构的链式存储