二、综合应用题
01.从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。
02.设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)
03.对长度为n的顺序表L,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除顺序表中所有值为x的数据元素。
04.从顺序表中删除其值给定值s和t之间(包含s和t,要求s<t)的所有元素,若s或t不合理或顺序表为空,则显示出错信息并退出运行。
05.从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同。
06.将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表。
07.已知在一维数组A[m+n]中依次存放两个线性表(a, a2, a3,…, am)和(b1, b2, b3,…, bn)。编写一个函数,将数组中两个顺序表的位直互换(b1, b2, b3,…, bn)放在(a, a2, a3,…, am)前面
08.线性表(a1, a2,a3,…, an)中的元素递增有序且按顺序存储于计算机内。要求设计一个算法,完成用最少时间在表中查找数值为x的元素,若找到,则将其与后继元素位置相交换,若找不到,则将其插入表中并使表中元素仍递增有序。
09.给定三个序列A、B、C,长度均为n,且均为无重复元素的递增序列,请设计一个时间上尽可能高效的算法,逐行输出同时存在与这三个序列中的所有元素。例如,数组A为{1,2,3],数组B为{2,3,4],数组C为{-1,0,2},则输出2。要求:
1) 给出算法的基本设计思想。
2)根据设计思想,采用C或C++语言描述算法,关键之处给出注释。
3)说明你的算法的时间复杂度和空间复杂度。
10.【2010统考真题】设将n (n>1)个整数存放到一维数组R中。设计一个在时间和空间两方面都尽可能高效的算法。将R中保存的序列循环左移p (0<p<n)个位置,即将R中的数据由变换为。要求:
1) 给出算法的基本设计思想。
2) 根据设计思想,采用C或C++或Java语言描述算法,关键之处给出注释。
3) 说明你所设计算法的时间复杂度和空间复杂度。