数据结构
ATTAIN__
受尽天磨乃铁汉,不遭人妒是庸才。
展开
-
数据结构顺序表题目(5)
顺序表题目描述及代码实现题目描述: 从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同。算法思想: 本题为有序顺序表,值相同的元素也一定在连续的位置上,用类似于直接插入排序的思想,初始时将第一个元素视为非重复的有序表。之后依次判断后面的元素是否与前面非重复有序表的最后一个元素相同,若相同则继续向后判断,若不同则插入到前面的非重复有序表的最后,直至判断到表尾为止。实现代码:bool del_same(sqList &L){ int i,j; if(L.length原创 2020-08-11 15:22:58 · 301 阅读 · 0 评论 -
数据结构顺序表题目(4)
顺序表题目描述及代码实现题目描述: 从有序顺序表中删除其值在给定值s与t之间(s<t)的所有元素,如果s或t不合理或顺序表为空,则显示出错信息并退出运行。算法思想: 本题与顺序表题目(3)类似,但不同的是此题为有序顺序表,所以删除的元素必定是相连的整体。先寻找值大于等于s的第一个元素(第一个删除的元素),然后寻找值大于t的第一个元素(最后一个删除的元素的下一个元素),要将这段元素删除,只需直接将后面的元素前移。实现代码:bool del_s_t(sqList &L, ElemType原创 2020-08-11 15:03:50 · 281 阅读 · 0 评论 -
数据结构顺序表题目(3)
顺序表题目描述及代码实现题目描述: 对长度为n的顺序表L,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为x的数据元素。题目分析: 题目要求时间复杂度为O(n)、空间复杂度为O(1),所以不能借助于其他数组,而且循环不能嵌套。具体思路如下:思路一: 用k记录顺序表L中不等于x的元素个数(即需要保存的元素个数),边扫描表L边统计k,并将不等于x的元素往前移动k个位置,最后修改L的长度。实现代码:void del_x_1(sqList &L, ElemTyp原创 2020-08-09 18:49:35 · 550 阅读 · 0 评论 -
数据结构顺序表题目(2)
顺序表题目描述及代码实现题目描述: 设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)。题目分析: 因为题目要求空间复杂度为O(1),所以我们首先考虑的就是不借助其他数组,在本数组上实现逆置,让其原地工作。初见到此题目时,我们会想到C语言的相关题目,就是实现数组元素逆置,通常我们会设置头、尾两个指针,同时交换头和尾的元素,头指针加1,尾指针减1,实现元素交换。实现代码:void reverse(sqList &L){ Elemtype temp; for (in原创 2020-08-09 14:54:31 · 306 阅读 · 0 评论 -
数据结构顺序表题目(1)
顺序表基本操作题目描述:从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空则显示出错误信息并退出运行。题目分析:设置一个变量min记录最小的元素,初始值为顺序表的第一个元素,而后将其与顺序表的各元素相比,若有更小值,则更新min的值;设置一个变量index用于记录最小值的下标,用于将最后一元素填补到最小值元素的位置。实现代码:int del_sqlist(sqList &L,ElemType &min){ if (L.l原创 2020-08-08 20:24:01 · 722 阅读 · 0 评论