计算机软件技术基础-习题一解答
- 格式:doc
- 大小:136.50 KB
- 文档页数:17
软件技术基础一、选择题1.算法的时间复杂度是指( D )。
A. 执行算法程序所需要的时间B. 算法程序的长度C. 算法程序中的指令条数D. 算法执行过程中所需要的基本运算次数2.下面概念中,不属于面向对象方法的是( B )。
A. 对象B. 过程调用C. 类D. 继承3.下面叙述正确的是( C )。
A. 算法的执行效率与数据的存储结构无关B. 算法的空间复杂度是指算法程序中指令(或语句)的条数C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止D. 以上三种描述都不对4.下列模式中,能够给出数据库物理存储结构与物理存取方法的是( A )。
A. 内模式B. 逻辑模式C. 概念模式D. 外模式5.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。
下列图符名标识的图符不属于数据流图合法图符的是( A )。
A.控制流B.加工C.数据存储D.数据源点和汇点6.下述关于数据库系统的叙述中正确的是( D )。
A. 数据库系统减少了数据冗余B. 数据库系统比文件系统能管理更多的数据C. 数据库系统中数据的一致性是指数据类型的一致D. 数据库系统避免了一切冗余7.结构化程序设计主要强调的是( B )。
A. 程序的规模B. 程序的易读性C. 程序的执行效率D. 程序的可移植性8.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是( D )。
A. 可行性分析B. 详细设计C. 概要设计D. 需求分析9.下列叙述中,正确的是( D )。
A. 软件就是程序清单B. 软件就是存放在计算机中的文件C. 软件应包括程序清单及运行结果D. 软件包括程序和文档10.在深度为6的满二叉树中,叶子结点的个数为( B )。
A. 15B. 16C. 31D. 3211.完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是( A )。
A.黑箱测试法B.白箱测试法C.错误推测法D.安装测试法12.数据库设计包括两个方面的设计内容,它们是( C )。
软件技术基础模拟试题(第二十次省统考)一、是非判断题(正确选填A,错误选填B)(每小题1分,共10分)1、数据元素是数据的基本单位,数据项是数据的最小单位。
(对a)2、栈是特殊的线性表,须用一组地址连续的存储单元来存储其元素。
(错b)3、引入虚拟存储技术后,逻辑内存总容量是由地址总线的位置确定的。
(a对)4、编译程序是一种常用应用软件。
(b错)5、顺序文件和链接文件的长度都可以动态变化。
(b错)6、在文件系统中采用目录管理文件。
(a对)7、允许多用户在其终端上同时交互地使用计算机的操作系统称为实时系统。
(b 错)8、程序、数据、和进程控制块是构成一个进程的三要素。
(对a)9、黑盒测试时,既要考虑程序的内部逻辑结构又要考虑其外部特性。
(错b)10、软件的总体设计和详细设计都要用PAD图形工具。
(错b)(参考答案:1~10:ABABB ABABB)二、单项选择题:(每小题1分,共5分)1、允许用户把若干作业提交计算机系统集中处理的操作系统称为(D)。
A分时操作系统B实时操作系统C网络操作系统D批处理操作系统2、分配到必要资源并获得了处理机时的进程的状态称为(B)。
A就绪状态B执行状态C等待状态D阻塞状态3、利用通道技术可以在(C)之间直接交换数据。
A内存与CPU B CPU与外设C内存与外设D内存、CPU和外设三者4、以下的准则中哪个不是软件设计的准则(A)。
A编程语言选择准则B信息屏蔽准则C结构化和模块化准则D抽象准则5、有一数列:97657613294958经过一趟排序后得到:65971376294958请问使用的是何种排序方法?(C)A简单插入排序B冒泡排序C2路归并排序D快速排序(参考答案:DBCAC)软件技术基础模拟试题(第十九次省统考)一、是非判断题(正确选填A,错误选填B)(每小题1分,共10分)1、在目前,用于保证软件质量的主要手段是进行软件测试。
(对)2、使用DMA方式传送数据期间不需要CPU干预。
《计算机软件技术基础》复习题1.线性表的链式存储结构与顺序存储结构相比优点是 CD 。
A. 所有的操作算法实现简单B. 便于随机存取A. 表元素B. 字符D. 数据项E. 信息项3.若长度为n 的线性表采用顺序存储结构,在其第I 个位置插入一个新元素的算法的时间复杂度为 C 。
(1≤I ≤n+1)A. O(0)B. O(1)C. O(n)D. O(n 2) 4.设A 是一个线性表(a 1,a 2,…,a n ),采用顺序存储结构,则在等概率的前提下,平均每插入一个元素需要移动的元素个数为 B ,平均每删除一个元素需要移动的元素个数为A ;若元素插在a i 与a i+1之间(0≤I ≤n-1)的概率为)1()(2+-n n i n ,则平均每插入一个元素所要移动的元素个数为 C ; A. 21-n B. 2n C. 312+n D. 413+n 5.下列函数中,按它们在∞→n 时的无穷大阶数,最大的是 D 。
A. log nB. nlog nC. 2n/2D. n!6.A. s->next=p+1; p->next=s;B. (*p).next=s; (*s).next=(*p).next;C. s->next=p->next; p->next=s->next;D. s->next=p->next; p->next=s;7.将两个各有n 个元素的有序表归并为一个有序表时,其最少的比较次数是 A 。
A. nB. 2n-1C. n-1D. 2n8.下面的程序段是合并两个无头结点链表(ha 和 hb)为一个无头结点链表ha 的过程,作为参数的两个链表都是按结点的data 域由大到小链接的。
合并后新链表的结点仍按此方式链接。
请填写下述空框,使程序能正确运行。
#define NULL 0typedef struct node{int data;struct node *next;}node, linklisttype;void combine(linklisttype *ha, linklisttype *hb){linklisttype *h, *p;h = (linklisttype *)malloc(sizeof(linklisttype));h->next = NULL;p = h;while(ha != NULL && hb != NULL)if(ha->data>=hb->data){ /*较大的元素先插入*/p->next = (1) ;p = (2) ;(3) ;}else{p->next = (4) ;p = (5) ;(6) ;}if(ha==NULL) (7) ;if(hb==NULL) (8) ;ha = h->next;free(h);}参考答案:(1) ha (2) p->next (3) ha=ha->next(4) hb (5) p->next (6) hb=hb->next(7) p->next=hb (8) p->next=ha9.如果表A中所有元素(a1,a2,…,a n)与表B的一个顺序子表(b k,b k+1,…b k+n-1)完全相同(即a1=b k,a2=b k+1,…a n=b k+n-1),则称表A包含在表B中。
第1章习题部分答案1. 操作系统的发展分为那几个阶段?解:操作系统的发展经历了三个阶段:操作系统的酝酿阶段、操作系统的形成阶段、操作系统的理论化和标准化阶段。
2. 计算机软件技术开发系统包括那几个阶段?解:计算机软件开发系统的发展经历了四个阶段:机器语言阶段、汇编语言阶段、高级语言阶段、面向对象语言和可视化语言阶段。
3. 计算机软件技术的主要范畴是什么?解:计算机软件技术的主要范畴包括软件工程技术、程序设计技术、软件工具环境技术、系统软件技术、数据库技术、实时软件技术、网络软件技术、与实际工作相关的软件技术等八个领域的内容。
4. 从软件技术的发展现状来看有哪些值得我们注意的问题?解:从软件技术的发展现状来看有以下几个值得我们注意的问题:1)软件危机2)软件技术标准,软件版权和软件价值评估3)软件技术的基础研究。
1第2章习题部分答案1. 什么是软件危机?软件危机的表现有哪些?解:软件开发技术的进步为能满足发展的要求,在软件开发中遇到的问题找不到解决的方法,问题积累起来形成了尖锐的矛盾,导致了软件危机。
2. 软件危机产生的原因是什么?解:造成软件危机的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的。
1)软件规模越来越大,结构越来越复杂。
2)软件开发管理困难而复杂。
3)软件开发费用不断增加。
4)软件开发技术落后。
5)生产方式落后。
6)开发工具落后,生产率提高缓慢。
3. 常见的软件过程模型有哪些?解:常见的软件过程模型有瀑布模型、增量模型、演化过程模型、敏捷开发4. 如何对软件质量进行评价?解:软件质量的评价主要围绕可维护性、可靠性、可理解性和效率这几个方面进行。
2第3章习题部分答案1. 软件可行性研究的目的是什么?软件可行性研究的任务又是什么?解:软件可行性研究的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。
可行性研究的任务首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把他们清楚地列举出来。
《软件技术基础》练习题太原理工大学现代科技学院2016第一章算法一、选择题1. 算法的复杂度包括【】。
A、时间复杂度B、空间复杂度C、时间及空间复杂度D、以上都不对2. 若x在长度为n的无序线性顺序表中的概率为50%,则在该表中查找x的平均查找次数(平均性态分析)为【】。
A、(n*3+1)/4B、(n-1)/2C、(n+1)/2D、(n+1)*n/23. 若x在长度为n的无序线性顺序表中的概率为50%,则在该表中查找x的最坏情况分析为【】。
A、n/2B、(n-1)/2C、(n+1)/2D、n4. 已知基本运算执行次数与n的关系,则下列哪个时间复杂度最大:【】。
A. f(n) = 1B. f(n) = 2n - 1C. f(n) = 10000n+10000D. f(n) = n2-100005. 算法分析的目的是【】。
A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性二、填空题1. 常用算法包括_________、_________、_________、_________、_________和回溯法。
2. 算法的基本特征有_________、_________、有穷性、输入和输出。
3. 下列程序段的时间复杂度是____。
for (i=1;i<=n;i++)A[i,i]=0;4.下列程序段的时间复杂度是____s=0;for(i=1;i<=2n;i++)for(j=1;j<=n;j++)s=s+B[i][j];sum=s;5. 下列程序段的时间复杂度是____i=1;while (i<=n)i=i*2;6. 在下面的程序段中,s= s + p;语句的执行次数为_________,p= p×j语句的执行次数为_________ ,该程序段的时间复杂度为________ 。
int i=0, s=0, p=1;while( ++i<=n ){for(j=1; j<=i; j++ )p = p×j;s = s + p;}7. 常见时间复杂度的量级有:常数阶O(_________)、对数阶O(_________)、线性阶O(_________)、平方阶O(_________)和指数阶O(_________)。
数据结构习题答案第一节概论一、选择题1.要求同一逻辑结构的所有数据元素具有相同的特性,这意味着( )。
A.数据元素具有同一的特点 *B.不仅数据元素包含的数据项的个数要相同,而且对应数据项的类型要一致 C.每个数据元素都一样 D.数据元素所包含的数据项的个数要相等2.数据结构是一门研究非数值计算的程序设计问题中计算机的( (1) )以及它们之间的( (2) )和运算的学科。
(1) A.操作对象 B.计算方法 *C.物理存储 D.数据映像(2) A.结构 *B.关系 C.运算 D.算法3.数据结构被形式地定义为(D,R),其中D是( (1) )的有限集合,R是D上( (2) )的有限集合。
(1) A.算法 *B.数据元素 C.数据操作 D.逻辑结构(2)A.操作 B.映像 C.存储 *D.关系4.在数据结构中,从逻辑上可以把数据结构分为( )。
A.动态结构和静态结构 B.紧凑结构和非紧凑结构 *C.线性结构和非线性结构 D.内部结构和外部结构5.线性表的顺序存储结构是一种( )的存储结构。
*A.随机存取 B.顺序存取 C.索引存取 D.Hash存取6.算法分析的目的是( )。
A.找出数据结构的合理性 B.研究算法中的输入和输出的关系 *C.分析算法的效率以求改进 D.分析算法的易懂性和文档性7.计算机算法指的是( (1) ),它必须具备输入、输出和( (2) )等五个特征。
(1) A.计算方法 B.排序方法 *C.解决某一问题的有限运算序列D.调度方法(2) A.可行性、可移植性和可扩充性 *B.可行性、确定性和有穷性 C.确定性,有穷性和稳定性 D.易读性、稳定性和安全性8.线性表若采用链表存储结构,要求内存中可用存储单元的地址( )。
A.必须是连续的 B.部分必须是连续的 C.一定是不连续的 *D.连续不连续都可以9.在以下的叙述中,正确的是( )。
A.线性表的线性存储结构优于链式存储结构 *B.二维数组是它的每个数据元素为一个线性表的线性表 C.栈的操作方式是先进先出 D.队列的操作方式是先进后出10.根据数据元素之间关系的不同特性,以下四类基本的逻辑结构反映了四类基本的数据组织形式,其中解释错误的是( )。
判断题╳1、硬盘是断电不会消失适合长期储存信息的,计算机必须具有硬盘才能工作。
√2、把内存中的数据传送到计算机的硬盘,称为读盘。
╳3、算法一般都可以用“顺序、循环、嵌套”的控制结构组合而成。
.√4、32位计算机是指该计算机能同时处理的二进制信息的位数是32位。
√5、用于存储显示屏上像素颜色信息的是显示存储器。
╳6、程序设计语言可划分为机器语言、汇编语言和高级语言三类,其中高级语言的运行速度最快。
√7、针式打印机的耗材是色带;喷墨打印机的耗材是墨水;激光打印机的耗材是碳粉。
╳8、I/O 接口从数据传输方式来看分为串行接口和并行接口,其中硬盘SATA接口是一种并行接口。
╳9、CPU运行时的系统时钟及各种与其同步的时钟均是由CPU内部控制器提供的。
√10、无线键盘和无线鼠标采用的是无线接口,通过无线电波将信息传送给计算机,需要专用的接收器。
╳11、数据传送率是衡量硬盘性能的一项指标。
硬盘内部传输速率大于外部传输速率。
√12、Windows操作系统采用并发多任务方式支持系统中的多个任务的执行,但任何时刻只有一个任务正被CPU执行。
╳13、CPU中包含若干寄存器,可以用来临时存放数据;所有PC机的CPU都具有相同的机器指令。
√14、在数据通信和网络中,二进位信息是一位一位串行传输的,因此传输速率的度量单位是bps。
√15、计算机的性能主要取决于CPU的运算速度、内存的容量和显示器的分辨率。
╳16、激光打印机是一种非击打式输出,它使用低电压不产生臭氧,在彩色图像输出设备中已占绝对优势。
√17、硬盘存储器的平均存储时间由硬盘的旋转速度、磁头的寻道时间和数据的传输速率所决定。
√18、高级语言种类繁多,但其基本成分可归纳为数据成分、运算成分、控制成分和传输成分等4种,算术表达式属于运算成分。
╳19、自由软件允许用户随意拷贝、修改其源代码,但不允许销售。
√20、RAM按工作原理的不同可分为DRAM和SRAM,DRAM的工作速度比SRAM的速度慢。
徐士良《计算机软件技术基础》(第4版)笔记和课后习题详解关注薇公号-精研学习网-查找资料第1章预备知识1.1复习笔记一、集合1基本概念集合是指若干个或无穷多个具有相同属性的元(元素)的集体。
通常,一个集合名称用大写字母表示,而集合中的某个元素用小写字母表示。
如果集合M由n(n≥0)个元素a1,a2,…,a n组成,则称集合M 为有限集。
如果一个集合中有无穷多个元素,则称此集合为无限集。
不包括任何元素的集合称为空集。
空集通常用Φ表示。
如果M是一个集合,a是集合M中的一个元素,则记作a∈M,称元素a属于集合M;如果a不是集合M中的元素,则记作a∉M,称元素a不属于集合M。
(1)列举法用列举法表示一个集合是将此集合中的元素全部列出来,或者列出若干项但能根据规律可知其所有的元素。
例如:大于1而小于100的所有整数的集合A可以表示为A={2,3,4, (99)(2)性质叙述法用性质叙述法表示一个集合是将集合中的元素所具有的属性描述出来。
例如:大于1而小于100的所有整数的集合A可以表示为A={a|1<a<100的所有整数}设M与N为两个集合,若M中的每个元素也为N的元素,则称M为N的子集,记作M⊆N,若M⊆N且N中至少有一个元素a∉M,则称M为N的真子集,记作M⊂N。
2基本运算(1)两个集合的并设有两个集合M和N,它们的并集记作M∪N,定义如下:M∪N={a|a∈M或a∈N}(2)两个集合的交设有两个集合M和N,它们的交集记作M∩N,定义如下:M∩N={a|a∈M且a∈N}两个集合M和N的并、交均满足交换律,即M∪N=N∪MM∩N=N∩M(3)两个集合的差设有两个集合M和N,它们的差集记作M-N,定义如下:M-N={a|a∈M但a∉N}两个集合的差不满足交换律,即M-N≠N-M对于集合的并、交、差有以下几点基本性质:①结合律(A∩B)∩C=A∩(B∩C)(A∪B)∪C=A∪(B∪C)②分配律A∩(B∪C)=(A∩B)∪(A∩C)A∪(B∩C)=(A∪B)∩(A∪C)③其他(4)映射映射的相关概念如下:①设A、B是两个非空集,如果根据一定的法则f,对于每一个x∈A,在B中都有唯一确定的y与之对应,则称f为定义在A上而在B中取值的映射,记作f:A→B,并将x与y的关系记作y=f(x),x称为自变元,y称为在f作用下x的像;②设给定映射f:A→B,且B=f(A),若对于每个y∈B仅有唯一的x∈A使f(x)=y,则称f有逆映射f-1;③若A、B两个集合有一一映射f存在,使f(A)=B,则称A与B成一一对应,A与B对等,记作A~B。
∑∑∑====n 1i n 1j 3n 1k n 162)1)(n n(n 21)n(n 2161)1)(2n n(n 21 i 21i 2121)i(i j 1n1i n 1i n 1i 2n 1i i 1j n 1i i 1j j 1k ++=++++==+=⎪⎭⎫ ⎝⎛+==∑∑∑∑∑∑∑∑========习题解答3.设n 为正整数, 分析下列各程序段中加下划线的语句的执行次数。
(1) for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++) {c[i][j] = 0.0;for (int k = 1; k <= n; k++)c[i][j] = c[i][j] + a[i][k] * b[k][j];}(2) x = 0; y = 0;for (int i = 1; i <= n; i++)for (int j = 1; j <= i; j++)for (int k = 1; k <= j; k++)x = x + y;(3) int i = 1, j = 1;while (i<=n && j<=n) {i = i + 1; j = j + i;}(4)* int i =1;do{for (int j = 1; j <= n; j++)i = i + j;}while(i<100 + n);【解答】(1)(2)(3)i = 1时,i = 2,j = j + i = 1 + 2 = 2 + 1,i = 2时,i = 3,j = j + i = ( 2 + 1 ) + 3 = 3 + 1 + 2,i = 3时,i = 4,j = j + i = ( 3 + 1 + 2 ) + 4 = 4 + 1 + 2 + 3,i = 4时,i = 5,j = j + i = ( 4 + 1 + 2 + 3 ) + 5 = 5 + 1 + 2 + 3 + 4, ……i = k 时,i = k + 1,j = j + i = ( k + 1 ) + ( 1 + 2 + 3 + 4 + … + k ),解出满足上述不等式的k 值,即为语句i = i + 1的程序步数。
()()()n 233k k 21k k 1k ni 1k j 2k1i ≤++=+++∴≤++=∑=(4) for 语句每执行一次,语句i=i+j 将执行n 次,而i 的值会增加(1)2n n + 因此,当for 语句执行k 次后,i 的值将变为 (1)12n n k++ 故最终for 语句的执行次数k 为满足 (1)11002n n k n ++≥+ 的最小整数k ,语句i = i + j 的程序步数为n*k 。
4.试编写一个函数计算n!*2n 的值,结果存放于数组A[arraySize]的第n 个数组元素中,0n arraySize 。
若设计算机中允许的整数的最大值为maxInt ,则当n>arraySize 或者对于某一个k (0 k n),使得k!*2k > maxInt 时,应按出错处理。
可有如下三种不同的出错处理方式:(1) 用printf 显示错误信息及exit(1)语句来终止执行并报告错误;(2) 用返回整数函数值0, 1来实现算法,以区别是正常返回还是错误返回;(3) 在函数的参数表设置一个引用型的整型变量来区别是正常返回还是某种错误返回。
试讨论这三种方法各自的优缺点,并以你认为是最好的方式实现它。
【解答】#include <stdio.h>const int arraySize = 100;const int MaxInt = 0x7fffffff;int calc( int T[ ], int n ) {int i, value = 1;T[0]=1;if ( n != 0 ) {int edge = MaxInt / n / 2;for ( i = 1; i < n; i++ ) {value *= i*2;T[i] = value;if ( value > edge ) return 0;}value *= n * 2;}T[n] = value;printf("A[ %d ]= %d\n”,n,T[n]);return 1;}void main ( ) {int A[arraySize];int i;for ( i = 0; i < arraySize; i++ )if ( !calc ( A, i ) ) {printf("failed at %d .\n", i );break;}}/*---------顺序表结构的定义.为简化起见,表元素我们使用整型数据----------- -----------数据元素从data[0]处开始存储---------------------------------*/ typedef struct /*注意typedef 的使用*/{int data[MAXSIZE]; /*数据域*/int length; /*表长*/}listtype;5.设有一个线性表 (a 0, a 1, …, a n-2, a n-1) 存放在一个一维数组A[arraySize]中的前n 个数组元素位置。
请编写一个函数将这个线性表原地逆置,即将数组的前n 个原址容置换为 (a n-1, a n-2, …, a 1, a 0)。
最后分析此算法的时间复杂度及空间复杂度。
【解答】void inverse (listtype * A) {int tmp;int n= A->length;for( int i = 0; i <= ( n-1 ) / 2; i++ ){tmp = A->data[i]; A->data[i] = A->data[n-i-1]; A->data[n-i-1] = tmp; }}时间复杂度:需进行n/2次循环,因此时间复杂度为O(n);空间复杂度:使用一个整形辅助存储单元tmp ,因此空间复杂度为O(1)。
6.顺序表的插入和删除要求仍然保持各个元素原来的次序。
设在等概率情形下, 对有127个元素的顺序表进行插入, 平均需要移动多少个元素? 删除一个元素, 又平均需要移动多少个元素?【解答】若设顺序表中已有n 个元素。
又设插入或删除表中各个元素的概率相等,则在插入时因有n+1个插入位置(可以在表中最后一个表项后面追加),每个元素位置插入的概率为1/(n+1),但在删除时只能在已有n 个表项围删除,所以每个元素位置删除的概率为1/n 。
插入时平均移动元素个数AMN(Averagy Moving Number )为()5.632n 21)n(n 1n 1)01)1n (n (1n 1i n 1n 1AMN n 0i ==++=+++-++=-+=∑=删除时平均移动元素个数AMN 为6321n 21)n (n n 10)12)(n 1)((n n 11)i (n n 1AMN 1n 0i =-=-=+++-+-=--=∑-=7.利用顺序表的操作,实现以下的函数。
并分析你所编制的函数的时间复杂度,并分析(2)与(3)的时间复杂度出现差异的原因。
(1) 从顺序表中删除具有给定值x 的所有元素。
(2) 从顺序表中删除其值在给定值s 与t 之间(要求s 小于t )的所有元素。
(3) 从有序顺序表中删除其值在给定值s与t之间(要求s小于t)的所有元素。
(4) 将两个有序顺序表la,lb合并成一个新的有序顺序表lc。
(5) 从顺序表中删除所有其值重复的元素,使表中所有元素的值均不相同。
【解答】(1) 从顺序表中删除具有给定值x的所有元素。
void DelValue(listtype * L, int x ){int i = 0, j;while ( i < L->length ) /*循环, 寻找具有值x的元素并删除它*/if (L->data[i] == x ) { /*删除具有值x的元素, 后续元素前移*/ for (j = i;j < L->length-1; j++ ) L->data[j] = L->data[j+1];L-length--; /*表长减1*/}else i++;}(2) 实现删除其值在给定值s与t之间(要求s小于t)的所有元素的函数如下:void DelValue_s_to_t (listtype *L,int s, int t){int i,j;if ( L->length == 0 || s >= t ) {printf(“List is empty or param eters are illegal!\n”); exit(1); }i = 0;while ( i < L->length) /*循环, 寻找具有值x的元素并删除它*/ if (L->data[i]>=s &&L->data[i]<= t){/*删除满足条件的元素, 后续元素前移*/ for ( j = i; j < L->length-1; j++ ) L->data[j] = L->data[j+1];L->length--; /*表长减1*/}else i++;}(3) 实现从有序顺序表中删除其值在给定值s与t之间的所有元素的函数如下:void DelValue_s_to_t_1 (listtype *L,int s int t){int i,j,k;if ( L->length == 0 || s >= t ){printf(“List is empty or parameters are illegal!\n”); exit(1); } for (i = 0; i < L->length; i++ ) /*循环, 寻找值≥s 的第一个元素*/ if ( L->data[i] >= s ) break; /*退出循环时, i指向该元素*/ if ( i < L->length ) {for (j = 1; i + j < L->length; j++ )/*循环, 寻找值 > t 的第一个元素*/if (L->data[i+j] > t ) break; /*退出循环时, i+j指向该元素*/for (k = i+j; k < L->length; k++ ) /*删除满足条件的元素, 后续元素前移*/ L->data[k-j] = L->data[k];L->length-= j; /*表长减j*/}}(4) 实现将两个有序顺序表合并成一个新的有序顺序表的函数如下:listtype * Merge(listtype *LA,listtype *LB ){/*合并有序顺序表LA与LB成为一个新的有序顺序表并由函数返回listtype *LC;int value1,value2;int i,j,k;initiatelist(LC);if (LA->length + LB->length > MAXSIZE) {printf(“表上溢/n”; exit(1);}i = 0, j = 0, k = 0;value1 = LA->data[i];value2 = LB->data[j];while (i < LA->length && j < LB->length ) {/*循环, 两两比较, 小者存入结果表*/if (value1 <= value2){LC->data[k] = value1; i++; value1=LA->data[i];}else {LC->data[k] = value2; j++; value2=LB->data[j];}k++;}while( i < LA->length){ /*当LA表未检测完, 继续向结果表传送*/ LC->data[k] = value1; i++; k++; value1 = LA->data[i];}while( j < LB->length){ /*当LB表未检测完, 继续向结果表传送*/ LC->data[k] = value2; j++; k++; value2 = LB->data[j];}LC->length = k;return LC;}(5) 实现从表中删除所有其值重复的元素的函数如下:void DelDouble(listtype *L){int i,j,k;int tmp;if(L->length == 0 ){printf(“表空\n”; exit(1);}i=0;while ( i < L->length ) { /*循环检测*/j = i + 1;tmp = L->data[i];while( j < L->length ) { /*对于每一个i, 重复检测一遍后续元素*/ if( tmp == L->data[j]) { /*如果相等,删除此结点,后续元素前移*/ for( k = j+1; k < L->length; k++ ) L->data[k-1] = L->data[k];L->length--; /*表最后元素位置减1*/}else j++;}i++; /*检测完L->data[i], 检测下一个*/ }}8.线性表可用顺序表或链表存储。