软件技术基础
《计算机软件技术基础》教学改革探索与研究

《计算机软件技术基础》教学改革探索与研究随着计算机科学与技术的发展,计算机软件技术作为其中的重要一部分也在不断更新和发展。
而在这个过程中,教学成为必然的趋势,只有不断革新教学方法和内容,才能更好地适应社会的需求和发展的趋势。
《计算机软件技术基础》作为计算机软件技术专业的一门核心课程,其教学更是刻不容缓。
在教学方面,首先要明确教学目标,确定学生需要掌握的知识和技能。
传统的教学模式往往注重理论知识的传授,而忽视了实践能力的培养。
因此,在《计算机软件技术基础》的教学中,可以引入更多的实践案例和项目实践,让学生在实践中掌握知识、提升能力。
其次,在教学方法上,可以引入问题驱动式教学法。
通过给学生提出一个真实的问题,让学生在解决问题的过程中掌握知识和技能。
这种教学方法可以激发学生学习的主动性和创新性,培养学生的问题解决能力和实践能力。
再次,在教学内容上,可以注重知识的前沿性和实用性。
计算机软件技术是一个快速发展的领域,教学内容必须跟上技术的最新发展,让学生接触到最前沿的知识和技术。
同时,教学内容也要紧密结合实际应用场景,让学生学习的知识可以直接应用于实际工作中。
另外,在教学评价上,可以注重学生能力的全面评价。
传统的考试评价往往只注重学生的记忆能力和理论知识掌握程度,而忽视了学生的实践能力和创新能力。
《计算机软件技术基础》的教学应该注重全面评价学生的能力,包括知识水平、实践能力、创新能力等方面。
在进行教学探索与研究时,需要充分借鉴国内外成功的案例和经验,同时结合本专业的特点和需求,制定适合本专业的教学方案。
教师应该积极参与到教学的过程中,不断尝试新的教学方法和内容,以提高教学质量和学生成绩。
总之,《计算机软件技术基础》教学探索与研究是一项长期的工作,需要全校师生的共同努力和支持。
通过不断地改进教学方法和内容,我们相信《计算机软件技术基础》这门课程将会更加贴近实际需求,培养出更多优秀的计算机软件技术专业人才,为推动计算机软件技术的发展做出更大的贡献。
软件技术基础模拟试题(精)

软件技术基础模拟试题(第二十四次省统考一、是非判断题(正确选填A,错误选填B(每小题1分,共10分1. 顺序表和线性链表的物理存贮形式都是顺序存贮。
( 12. 数据类型是某种程序设计语言中已实现的数据结构。
( 23. 如果通过软件测试没有发现错误,则说明软件是完全正确的。
( 34. 快速原型模型可以有效地适应用户需求的动态变化。
( 45. 不同进程之间的动作在时间上不能重叠。
( 56. 分区式存储管理能够进行存储空间共享。
( 67. 链接文件和索引文件都可以非连续存放。
( 78. 中断处理一般分为中断响应和中断处理两个步骤。
前者由软件实施,后者主要由硬件实施。
( 89. 在C++语言中,“重载”表达了最简单的多态性。
( 910.进程调度根据一定的调度算法,从等待队列中挑选出合适的进程。
( 10(参考答案:1~10:ABBAB BABAB二、单项选择题:(每小题1分,共5分1. 在数据结构中,一个存储结点存放一个(11 。
11 (A 数据项(B 数据元素(C 数据结构(D 数据类型2. 把逻辑地址转变为存储的物理地址的过程称作(12 。
12 (A 编译(B 连接(C 运行(D 重定位3. SPOOLing技术可以实现设备的(13 分配。
13 (A 虚拟(B 共享(C 独占(D 物理4. 允许用户把若干作业提交计算机系统集中处理的操作系统称为(14 。
14 (A 分时操作系统(B 实时操作系统(C 网络操作系统(D 批处理操作系统5. 进程从运行状态进入就绪状态的原因可能是(15 。
15 (A 被选中占有处理机(B 时间片用完(C 等待的事件已发生(D 等待某一事件(参考答案:BBADB软件技术基础模拟试题(第二十三次省统考一、是非判断题(正确选填A,错误选填B(每小题1分,共10分1. 数据在计算机内在中的表示是指数据的存储结构。
( 12. 能影响中断响应次序的技术是中断优先级和中断屏蔽。
( 23. 链表可以随机访问任意一个结点,而顺序表则不能。
软件技术基础模拟试题及参考答案

软件技术基础模拟试题(第二十次省统考)一、是非判断题(正确选填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 内存与CPUB CPU与外设C 内存与外设D 内存.CPU 和外设三者4.以下地准则中哪个不是软件设计地准则( A ).A 编程语言选择准则B 信息屏蔽准则C 结构化和模块化准则D 抽象准则5.有一数列:97 65 76 13 29 49 58 经过一趟排序后得到:65 97 13 76 29 49 58 请问使用地是何种排序方法?(C)A 简单插入排序B 冒泡排序C 2路归并排序D 快速排序(参考答案:DBCAC )软件技术基础模拟试题(第十九次省统考)一、是非判断题(正确选填A,错误选填B)(每小题1分,共10分)1.在目前,用于保证软件质量地主要手段是进行软件测试.(对)2.使用DMA方式传送数据期间不需要CPU干预.(错)3.线性顺序队列会产生“假溢出”,而线性循环队列则不会.(对)4.对同一种算法,用高级语言编写地程序比用低级语言编写地程序运行速度快.(错)5.在线性表中,数据地存储方式有顺序和链接两种.(错)6.进程由程序块.进程控件块和数据块三部分组成.(对)7.在面向对象地程序设计中,派生类只能从一个基类产生.(对)8.操作系统是用户和硬件地接口.(对)9.个人计算机中可配置地最大内存容量受地址总线位数地限制.(对)10.软件维护中最困难地问题是软件配置不全.(错)(参考答案:1~10:A.B.A.B.B.B.A.A.A.B)二、单项选择题:(每小题1分,共5分)1.在排序法中,从未排序序列中依次取出元素,与已排序序列中地元素作比较,将其放入已排序序列地正确位置称为(D ).A 选择排序B 快速排序C 插入排序D 冒泡排序2.有X.Y.Z三个元素依次入栈,不可能地出栈顺序是(B ).A Z,Y,XB Z,X,YC Y,X,ZD X,Y,Z3.进程地状态是可以转换地,而以下哪个状态转换是不可能地(D ).A 就绪状态-执行状态B 执行状态-就绪状态C 阻塞状态-就绪状态D 等待状态-执行状态4.线性链表地地址( D ).A 必须连续B 部分地址必须连续C 一定不连续D 连续与否均可以5.在软件测试中,(A)主要分析程序地内部结构.A 白盒法B 黑盒法C 因果图法D 错误推测法(参考答案:1~5:C.B.D.D.A)软件技术基础模拟试题(第十六次省统考)一.是非判断题(正确选填A,错误选填B)(每小题1分,共10分)1.软件测试地目地是为了发现软件中地全部错误.(错)2.在树形结构中,每一层地数据元素只和上一层中地一个元素相关.(对)3.所谓共享设备是指可以分时地为多个作业服务地设备,打印机属于共享设备.(错)4.面向对象地程序设计地基本做法是将数据及对数据地操作放在一起,作为一个相互依存.不可分割地整体来处理.(对)5.高级程序设计语言C++是C语言地发展和扩充,它们都是结构化程序设计语言.错)6.文件管理系统只负责对系统文件和用户文件地组织和管理,它不负责对文件进行保护和故障恢复.(错)7.树形结构是用于描述数据元素之间地层次关系地一种线性数据结构.(错)8.进程地建立可以通过作业调度来实现.(对)9.进程间由于共享资源而产生地制约关系称为进程同步.(错)10.缓冲池是由多个缓冲区组成,一个系统可有一个或几个缓冲池,一个缓冲池可有多个缓冲区.(对)(参考答案:1~10:BABAB BBABA)二.单项选择题:(每小题1分,共5分)1.不属于面向对象程序设计地主要特性地是(C ).A 封装性B 重载与多态性C 数据地完整性D 继承性2.引入缓冲区地主要目地是( D ).A 节省内存B 提高CPU地利用率C 提高I/O设备地效率D 改善CPU和I/O设备间速度不匹配地情况3.要进行二分查找,则线性表(D).A 必须以顺序方式存储B 必须以链接方式存储C 必须以队列方式存储D 必须以顺序方式存储,且数据元素有序.4.在结构化程序设计中,应尽量避免使用( C ).A 条件语句B 循环语句C 转向语句D 输出语句5.在以下所列中不是虚拟设备技术地是( D ).A 多窗口技术B 脱机输出C 虚拟内存D 中断处理(参考答案:CDDCD)操作系统部分试题一、单选题:1.线程是进程地实体,意味着(②)①线程在进程中是唯一地②线程可以使用进程中地资源③线程在运行中不能中断④在同一进程中地多个线程具有不同地地址空间2.检测死锁地算法是在(④)①程序中申请资源时使用②死锁出现之后使用③死锁即将出现时使用④定时检查系统状态时使用3.在下列问题中,哪一个不是设备中应考虑地问题(④)①设备地固有属性②与设备无关性③安全性④及时性4.在下列哪一个不是外存分配方式(③)①连续分配②链接分配③互斥分配④索引分配5.联想存储器就是(①)①快表②页表③段表④内存6.磁盘为共享设备地主要原因是(①)①多个用户可同时访问磁盘②磁盘空间可让多个用户共享③磁盘可支持SPOOLING技术④磁盘有多个磁头7.指出以下非临界资源(④)①变量②数据结构③队列④纯代码8.进程被阻塞以后,代表进程在阻塞队列地是它地(②)①文件控制块②进程控制块③作业控制块④设备控制块9.在以下哪种状态下,作业已获得虚处理机.(②)①提交状态②运行状态③输入状态④输出状态10.进程调度程序地主要功能是(③)①在作业和作业之间切换CPU ②防止死锁③在进程和进程之间切换CPU ④实现进程之间地同步与互斥11.衡量系统地调度性能主要是(①)①作业地周转时间②作业地输入/输出时间③作业地等待时间④作业地响应时间12.批处理系统地主要缺点是(①)①无交互性②输入/输出设备利用率低③CPU利用率低④失去了多道性13.设备处理程序就是(②)①通道处理程序②I/O进程与设备控制器之间地通信程序③设备分配程序④缓冲管理程序14.AND信号量机制是为了(③)①信号量地集中使用②解决结果地不可再现性问题③防止系统地不安全性④实现进程地相互制约15.将硬盘信息存到内存之前地磁盘访问需要三个延迟时间,请按从最慢到最快地次序,正确选择访问数据地延迟时间.(④)①旋转延迟时间,快表地开销时间,寻道时间②快表地开销时间,旋转延迟时间,寻道时间③数据读出或写入磁盘时间,旋转延迟时间,寻道时间④寻道时间,旋转延迟时间,数据读出或写入磁盘时间16.使用访问位地目地是:(②)①实现LRU页面置换算法②实现NRU页面置换算法③在快表中检查页面是否进入④检查页面是否最近被写过17.可能出现抖动地存储管理方法有:(④)①固定式分区②动态分区分配③动态重定位分区分配④请求分页存储管理18.进程间地同步是指进程间在逻辑上地相互(②)关系.①联接②制约③继续④调用19.在操作系统中,用户使用I/O设备时,通常采用(②)①物理设备名②逻辑设备名③虚拟设备名④设备出厂号20.SPOOLING技术地实质是(2 ).①以空间换取时间②将独享设备改造为共享设备③在进程和进程之间切换设备④虚拟设备21.不是内核地基本功能(④)①中断处理②时钟管理③原语操作④命令接口22.给定一个连续文件有100个存储块,由于磁盘操作需要一块插入在文件中间,现已插入该块,该块地最小编号为多少?(③)① 2 ② 52 ③ 101 ④ 15123.资源地按序分配策略可以破坏哪个条件(④)①互斥使用资源②占有且等待资源③非抢夺资源④循环等待资源24.在各种作业调度算法中,若所有作业同时到达,则平均等待时间最短地算法是:(④)①FCFS/FIFO ②优先数③最高响应比优先④短作业优先25.不是由内核为之创建地进程(③)①用户登录②作业调度③应用请求④提供服务26.不能体现多处理机性能地描述(①)①管理科学,提高了单机地运行速度②增加了系统地吞吐量③性价比高④提高了系统地可靠性27.为了变换页表地整个空间,需要确定相应地一些(③)①页面和在进程中地段号②页面与在进程中地段号相乘③在物理存储器中地页帧④以上都不正确28. 若有一进程拥有100个线程,这些线程属于用户级线程,则在系统调度执行时间上占用(①)时间片.① 1 ② 100 ③1/100 ④ 029.能从一种状态转变为3种状态地是(④)①就绪②阻塞③完成④执行30.作业地周转时间与响应时间地时序关系是(④)①重叠地②相邻接地③有间隔地④不存在地31.下面哪一个不会引起进程创建 ( ③)①用户登录②作业调度③设备分配④应用请求32.不是同步机制应遵循地准则(④)①让权等待②空闲让进③忙则等待④AND条件33.死锁定理是用于处理死锁地那一种方法(③)①预防死锁②避免死锁③检测死锁④解除死锁34.当分配一通道给进程,由该进程传送完数据之后才能给别地进程占用,这种情况是属那一种通道类型.(② )①字节多通道②数组选择通道③数组多路通道④PIPE35.段式存储管理中,处理零头问题可采用(②)方法.①重定位②拼接③spooling技术④覆盖技术36.适合多道程序运行地存储管理中,存储保护是为了(④ )①防止一个作业占用同一个分区②防止非法访问磁盘文件③防止非法访问磁带文件④防止各道作业相互干扰37.分页存储管理中,主存地分配是(①).①以块为单位进行②以作业地大小分配③以物理段进行分配④以逻辑记录大小进行分配38.请求页式存储管理系统可能出现(①)问题.①抖动②不能共享③外零头④动态链接39.缓冲池管理中着重考虑地问题是(③).①选择缓冲区地大小②决定缓冲区地数量③实现进程访问缓冲池地同步④限制进程地数量40.设置当前目录地主要原因是(②).①节省主存空间②加快文件查找速度⑤节省辅存空间④便于打开文件41.建立多级目录(③).①便于文件地保护②便于关闭文件③解决文件地重名与共享④提高系统地效率42.各站点既可以作为客户去访问其它站点,又可以为其它站点服务,这种方式称为(③)①服务器模式②客户模式③对等模式④客户/服务器模式43.文件地顺序存取是(②).①按终端号依次存取②按文件地逻辑号逐一存取③按物理块号依次存取④按文件逻辑记录地大小逐一存取44.AND信号量机制是为了(③)①信号量地集中使用②解决结果地不可再现性问题③防止系统地不安全性④实现进程地相互制约45.使用修改位地目地是:(④)①实现LRU页面置换算法②实现NRU页面置换算法③在快表中检查页面是否进入④检查页面是否最近被写过46.通道程序是(②).①由一系列机器指令组成②由一系列通道指令组成③可以由高级语言编写④就是通道控制器47.在n个进程地分时系统中,其虚处理机地速度,约为单道系统地(②).①n倍② 1/n ③同等大小④ nq(注:q为是时间片)48.索引文件地主要优点是(①).①便于随机存取②提高辅存空间地利用率③便于顺序存取④减少开销49.分区地保护措施主要是(①).①界地址保护②程序状态保护③用户权限保护④存取控制表保护50.多道程序技术地实质就是(②).①程序地顺序执行②程序地并发执行③用户进程和系统进程地同时执行④多个处理机同时运行51.当输入输出操作正常结束时,操作系统将请求该操作地进程地状态设置成(③).①等待状态②运行状态③就绪状态④挂起状态52.关于作业调度地设计原则,不必考虑(①).①外设数据传输速度②平衡使用资源③公平④作业运行时间53.P操作(②).①只对二元信号量进行操作②可表示申请一个资源③可能唤醒一个进程④不能阻塞进程54.分页存储管理要求(②).①地址空间不必连续②地址空间必须连续③存储空间必须连续④作业地尺寸不能超过内存地容量55.段式存储管理比页式存储管理(①).①更便于共享②更有利于主存利用③更简单④更容易出现抖动现象56.通道程序是(②).①由一系列机器指令组成②由一系列通道指令组成③可以由高级语言编写④就是通道控制器57.缓冲池地概念是(④).①系统中同时存在单.双缓冲②系统中同时存在多个缓冲③系统中同时使用了各种缓冲技术④既能用于输入.又能用于输出地公用器58.在下列问题中,哪一个不是设备分配中应考虑地问题(④).①设备地固有属性②与设备地无关性③安全性④及时性59.死锁地检测是(③).①对系统资源分配加以限制,可以防止死锁②对系统资源分配加以限制,可以避免死锁③对系统资源分配不加以限制,定时地检测系统是否存在死锁加以解除④对系统资源分配不加以限制,采用静态分配方法,以避免死锁60.可变式分区存储管理策略常采用分配算法有(③).①优先数法②FCFS ③首次适应和最佳适应算法④循环扫描法61.某页式存储管理系统中,地址寄存器低9位表示页内位移量,则页面大小最多为(③)①1024字节②1024K字节③512字节④512K字节62.段式存储管理中,处理零头问题可采用(②)方法.①重定位②拼接③spooling技术④覆盖技术63.设置当前目录地主要原因是(②).①节省主存空间②加快文件查找速度③节省辅存空间④便于打开文件64.建立多级目录(③).①便于文件地保护②便于关闭文件③解决文件地重名与共享④提高系统地效率65.文件地顺序存取是(②).①按终端号依次存取②按文件地逻辑号逐一存取③按物理块号依次存取④按文件逻辑记录地大小逐一存取二. 判断题(每小题2分,共16分)1.(t )缓冲技术是以空间换时间,而且只能在设备使用均衡时起到平滑作用.2.( f )动态重定位与装入时动态链接在概念上是相同地.3.(t )在分时系统中采用虚拟存储技术可以改善响应时间.4.(t )在现代地分时系统中,逻辑处理机隐含了虚拟处理机地功能.5.(t )独享设备与共享设备地属性不同,其共享方式也不同.6.(t)采用AND型信号量机制是为了防止系统地不安全.7.(f )如果一个站点既可以作为客户,又可以作为服务器向其它站点提供服务,称为客户/服务器模式.8.(t )设备处理程序是I/O进程与设备控制器之间地通信程序.(正确:1.3.4.5.6.8 错误:2.7)1.()在段页式管理中,既有段表又有页表,就不能再使用快表了. 2.(t )实现虚拟存储器地关键技术是提供快速有效地自动地址变换地硬件机构和相应地软件算法.3.( f )一个操作系统地系统调用越多,系统地功能就越强,用户使用就越复杂.5.( t )作业调度程序本身作为一个进程在系统中执行,它是在系统初始化时被创建地.6.( t )响应比高者优先调度算法解决了长作业死等地问题. 7.( f )必须在分时系统地情况下,进程才能并发执行.8.( f )检测死锁地算法是按照死锁定理来实现地,必须在死锁发生时调用.9.( f )在引入线程地操作系统中,则把进程作为调度和分派地基本单位,而把线程作为资源拥有地基本单位.10.(t )虚拟存储器地最大容量是由主存和辅存地容量之和决定地.(正确:2.5.6.10 错误:1.3.7.8.9)1.( f )程序链接就是将程序调入内存.2.( f )线程是进程地实体,线程地控制块就是进程地控制块. 3.( f )命令解释程序是用于对选择地命令进行解释,以便用户了解其含义,而不是执行命令.4.( f )应用程序可通过终端窗口向用户展示系统所提供地各种服务及其需要用户输入地信息.5.(f )通过采用死锁定理地原则能够找到进程地安全序列. 6.( f )作业地周转时间包含有响应时间.7.( f )在存储器管理中,采用了重定位技术实现虚拟存储管理,因此虚拟存储空间可以无限大.8.(t )设备管理是通过一些数据结构来实现对其设备进行管理和控制地.9.( f)目录级安全管理,是为保护系统中地各种目录而设计地,它与用户权限无关.10.( t )控制器能接收CPU发来地命令,并去控制I/O设备工作.它是驱动程序所依赖地硬件之一.(正确:8.10 错误:1.2.3.4.5.6.7.9)1.( f )可变式分区采用紧凑技术,可构成大地空白存储区2.( f )多级反馈队列调度算法是属静态优先权调度算法.3.( f )静态链接需要共享目标模块地拷贝,而动态链接不需要共享目标模块地拷贝.4.( f )在页面置换算法中, 最近最久不用页面置换算法LRU与简单地Clock置换算法是相同地.5.( f )设备控制器是可编址设备.当用于控制多台设备时,则具有多地址.6.(t )缓冲技术是以空间换取时间,而且只能在设备使用不均衡时起到平滑作用.7.( t )由系统通过逻辑设备表实现逻辑设备到物理设备地映射.当更换物理设备时,用户地程序不用改,仅修改逻辑设备表8( f )采用多级目录不能实现不同用户可使用不同名字,来访问系统中地同一个共享文件.9.( t )用户对文件地访问:将由用户访问表.目录访问权限及文件属性三者地权限所确定.10.( f )请求页式管理系统中,既可以减少外零头,又可以消除内零头.(正确:6.7.9 错误:1.2.3.4.5.8.10)1.并行是指两个或多个事件在同一时间间隔内发生,而并发性是指两个或多个事件在同一时刻发生.( f )2.响应比高者优先调度算法解决了长作业死等地问( t )3.程序地顺序执行具有顺序性,封闭性和不可再现性.( f )4.进程控制一般是由操作系统地内核来实现.( t )5.在引入线程地操作系统中,则把进程作为调度和分派地基本单位,而把线程作为资源拥有地基本单位.( f )(正确:2.4 错误:1.3.5)。
软件技术知识基础-数据结构

栈
总结词
栈是一种后进先出(LIFO)的数据结构。
VS
详细描述
栈只允许在末尾进行插入和删除操作,通 常用于实现函数调用、括号匹配等功能。 栈的优点是插入和删除速度快,缺点是空 间利用率较低。
队列
总结词
队列是一种先进先出(FIFO)的数据结构。
详细描述
队列允许在一端进行插入操作,在另一端进 行删除操作,通常用于实现任务调度、缓冲 区处理等功能。队列的优点是空间利用率高, 缺点是插入和删除速度较慢。
软件技术知识基础-数 据结构
目 录
• 数据结构概述 • 线性数据结构 • 非线性数据结构 • 排序与查找 • 数据结构的应用
01
数据结构概述
数据结构的定义
数据结构:数据结构是计算机中组织数据的方式,它定义了数据元素之间的逻辑关系。数据结构是计算机存储、组织数据的 方式,它涉及到数据的逻辑结构、物理结构以及数据元素之间的关系。
感谢您的观看
04
排序与查找
排序算法
冒泡排序
通过重复地遍历待排序序列,比较相邻元素的大 小,交换位置,使得较大的元素逐渐往后移动, 最终达到排序的目的。
插入排序
将待排序元素插入到已排序序列中的适当位置, 使得插入后仍然保持有序,直到所有元素均插入 完毕。
选择排序
每次从未排序的元素中选取最小(或最大)的一 个元素,将其放在已排序序列的末尾,直到所有 元素均排序完毕。
快速排序
采用分治策略,通过一趟排序将待排序序列分割 成独立的两部分,其中一部分的所有元素均比另 一部分的元素要小,然后再按此方法对这两部分 继续进行排序,以达到整个序列有序。
查找算法
线性查找
二分查找
哈希查找
《软件技术基础》实验指导

说明每个实验题目含有一个main函数和一些函数, 与实验题目相关的基本运算的函数定义和main函数定义的代码在附录以及对应的文件夹中给出, 供上机实验参考使用。
对于每个题目, 只需要根据题目要求设计算法, 补充函数定义, 然后对程序进行编译、调试。
实验一线性表一、实验目的1.熟悉线性表的顺序和链式存储结构2.掌握线性表的基本运算3.能够利用线性表的基本运算完成线性表应用的运算二、实验内容设有一个线性表E={e1, e2, …, en-1, en}, 设计一个算法, 将线性表逆置, 即使元素排列次序颠倒过来, 成为逆线性表E’={ en , en-1 , …, e2 , e1 }, 要求逆线性表占用原线性表空间, 并且用顺序表和单链表两种方法表示, 分别用两个程序来完成。
(文件夹: 顺序表逆置、单链表逆置)已知由不具有头结点的单链表表示的线性表中, 含有三类字符的数据元素(字母、数字和其他字符), 试编写算法构造三个以循环链表表示的线性表, 使每个表中只含有同一类的字符, 且利用原表中的结点空间, 头结点可另辟空间。
(文件夹: 分解单链表)实验二栈和队列一、实验目的1.熟悉栈和队列的顺序和链式存储结构2.掌握栈和队列的基本运算3.能够利用栈和队列的基本运算完成栈和队列应用的运算二、实验内容1.设单链表中存放有n个字符, 试编写算法, 判断该字符串是否有中心对称的关系, 例如xyzzyx是中心对称的字符串。
(提示: 将单链表中的一半字符先依次进栈, 然后依次出栈与单链表中的另一半字符进行比较。
)(文件夹: 判字符串中心对称)假设以数组sequ[m]存放循环队列的元素, 同时设变量rear和quelen 分别指示循环队列中队空的条件:sq->quelen==0;队满的条件:sq->quelen==m。
(文件夹:循环队列)实验三串一、实验目的1.熟悉串的顺序存储结构2.掌握串的基本运算及应用二、实验内容1. 串采用顺序存储结构, 编写朴素模式匹配算法, 查找在串中是否存在给定的子串。
软件技术基础模拟试题及参考答案

软件技术基础模拟试题(第二十次省统考)一、是非判断题(正确选填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. 便于随机存取 C. 便于插入和删除D. 便于利用零散的存储器空间 2.线性表是具有n 个 C 的有限序列;A. 表元素B. 字符C. 数据元素D. 数据项E. 信息项3.若长度为n 的线性表采用顺序存储结构,在其第I 个位置插入一个新元素的算法的时间复杂度为 C ;1≤I ≤n+1 A. O0 B. O1 C. OnD. On 24.设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+nD. 413+n5.下列函数中,按它们在∞→n 时的无穷大阶数,最大的是 D ;A. log nB. nlog nC. 2n/2D. n6.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 combinelinklisttype ha, linklisttype hb{linklisttype h, p;h = linklisttype mallocsizeoflinklisttype;h->next = NULL;p = h;whileha = NULL && hb = NULLifha->data>=hb->data{ /较大的元素先插入/p->next = 1 ;p = 2 ;3 ;}else{p->next = 4 ;p = 5 ;6 ;}ifha==NULL 7 ;ifhb==NULL 8 ;ha = h->next;freeh;}参考答案: 1 ha 2 p->next 3 ha=ha->next4 hb5 p->next6 hb=hb->next7 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中;设ha,hb为带头结点的单链表,分别表示有序表A和B,下面的函数用于判别表A 是否包含在表B中,若是,则返回true,否则返回false;提示:用递归实现define true 1define false 0define NULL 0typedef struct node{int data;struct node next;}node, linklisttype;int inclusionlinklisttype ha, linklisttype hb{linklisttype pa, pb;pa = ha->next;pb = hb->next;1 ;while 2ifpa->data=pb->data 3 ;else 4 ;5 ;}参考答案:1 ifpa==NULL returntrue2 pb=NULL && pa->data>=pb->data3 returninclusionpa, pb4 pb = pb->next;5 returnfalse10.在本题的程序中,函数create_link_listn建立一个具有n个结点的循环链表;函数josephusn,I,m 对由create_link_listn所建立的具有n个结点的循环链表按一定的次序逐个输出,并删除链表中的所有结点;参数nn>0指明循环链表的结点个数,参数I1≤I≤n指明起始结点,参数mm>0是步长,指明从起始结点或前次被删除并输出的结点之后的第m个结点作为本次被输出并删除的结点;例如,对于下图所示的具有6个结点的循环链表,在调用josephus6,3,2后,将输出5,1,3,6,4,2;请在空框处填上适当内容,每框只填一个语句;define NULL 0typedef struct node{int data;struct node next;}node, linklisttype;linklisttype create_link_listint n{linklisttype head, p, q;int I;head = NULL;ifn>0{head = linklisttype mallocsizeoflinklisttype;p = head;forI=1;I<=n-1;I++{ /此循环用于建立一个链表,链表的内容从1至n-1/p->data = I;q = linklisttype mallocsizeoflinklistttype;1 ;2 ;}p->data = n;3 ; /建立从尾链到首的环形结构/}returnhead;}void Josephusint n, int j, int m{linklisttype p, q;int j;p = create_link_listn;for;I>1;I-- p = p->next;4 ;whilej<n{forI=1;I<=m-1;I++ p = p->next;5 ;printf“%8d”,q->data;6 ;freeq;j=j+1;}}参考答案:1 p->next = q;2 p = q;3 p->next = head4 j=05 q=p->next;6 p->next = q->next11.在下列程序中,函数differenceA,B用于求两集合之差C=A-B,即当且仅当e是A中的一个元素,且不是B中的元素时,e是C中的一个元素;集合用有序链表实现,用一个空链表表示一个空集合,表示非空集合的链表根据元素之值按递增排列,执行C=A-B之后,表示集合A和B的链表不变,若结果集合C非空,则表示它的链表应根据元素之值按递增序排列;函数append用于在链表中添加结点;include <stdio.h>define NULL 0typedef struct node{int data;struct node next;}NODE;NODE appendNODE last, int x{last->next=NODE mallocsizeofNODE;last->next->data=x;returnlast->next;}NODE differenceNODE A ,NODE B{NODE C,last;C=last=NODE mallocsizeofNODE;while 1ifA->data < B->data{last=appendlast,A->data;A=A->next;}elseif 2 {A=A->next;B=B->next;}else3 ;while 4 {last=appendlast,A->data;A=A->next;}5 ;last=C;C=C->next;freelast;returnC;}参考答案:1 A=NULL & B=NULL2 A->data==B->data3 B=B->next;4 A=NULL5 last->next=NULL;12.阅读以下算法,填充空格,使其成为完整的算法;其功能是在一个非递减的顺序存储线性表中从下标1处开始存储,删除所有值相等的多余元素;define MAXSIZE 30typedef struct{int elemMAXSIZE;int length;/表长/}sqlisttype;void exam21sqlisttype L{int I,j;I=2,j=1;while 1 {ifL->elemI<>L->elemj{2 ;3 ;}I++;}4 ;}参考答案:1 i<=L->length23 j++;413.用单链表表示的链式队列的队头在链表的 A 位置;A. 链头B. 链尾C. 链中14.若用单链表表示队列,则应该选用 B ;A. 带尾指针的非循环链表B. 带尾指针的循环链表C. 带头指针的非循环链表D. 带头指针的循环链表15.在解决计算机主机与打印机之间速度不匹配问题时,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则从该缓冲区中取出数据打印,先放入打印缓冲区的数据先被打印;该缓冲区应该是一个 B 结构;A. 堆栈B. 队列C. 数组D. 线性表16.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3;当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为 B ;A. 1和5B. 2和4C. 4和2D. 5和117.设栈的输入序列为1,2,…,10,输出序列为a1,a2,…,a10,若a5=10,则a7为 C ;A. 4B. 8C.不确定D.718.设栈的输入序列是1,2,3,4,则 D 不可能是其出栈序列;A. 1243 B. 2134 C. 1432 D. 431219.以下 D 是C语言中”abcd321ABCD”的子串;A. abcdB. 321ABC. “abcABC”D. “21AB”20.若串S=”software”,其子串的数目是 C ;A. 8B. 37C. 36D. 921.将一个A1:100,1:100的三对角矩阵,按行优先存入一维数组B1:298中,A中元素A66,65即该元素的下标在B数组中位置k为 B ;A. 198B. 195C. 197D. 19622.设高为h的二叉树只有度为0和2的结点,则此类二叉树的结点数至少为 B ,至多为F ;高为h的完全二叉树的结点数至少为 E ,至多为 F ;A. 2h B. 2h-1 C. 2h+1 D.h+1E. 2h-1F. 2h-1G. 2h+1-1H. 2h+123.一棵有124个叶结点的完全二叉树,最多有 B 个结点;A. 247B. 248C. 249D. 25124.若从二叉树的任一结点出发到根的路径上所经过的结点序列按其关键字有序,则该二叉树是C ;A. 满二叉树B. 哈夫曼树C. 堆D. 二叉查找树25.前序遍历和中序遍历结果相同的二叉树为 F ;前序遍历和后序遍历结果相同的二叉树为B ;A. 一般二叉树B. 只有根结点的二叉树C. 根结点无左孩子的二叉树D. 根结点无右孩子的二叉树E. 所有结点只有左孩子的二叉树F. 所有结点只有右孩子的二叉树26.具有n 个结点的完全二叉树,已经顺序存储在一维数组A1..n 中,下面的算法是将A 中顺序存储变为二叉链表存储的完全二叉树;请填写适当语句在下面的空格内,完成上述算法; define MAXSIZE 30 typedef struct btnode{ int data;struct btnode lchild, rchild;}BTN;void createtreeBTN p,int A, int I,int n{ 1 ; p->data=AI; if 2 3 ; elsep->lchild=NULL;if 4 createtree 5 ; elsep->rchild=NULL; }void btreeBTN p ,int A,int n{ createtreep,A,1,n; }参考答案:1 p=BTN mallocsizeofBTN2 2I<=n3 createtreep->lchild,A,2I,n4 2I+1<=n5 p->rchild,A,2I+1,n27.若在线性表中采用折半查找法查找元素,该线性表应该 C ; A. 元素按值有序B. 采用顺序存储结构C. 元素按值有序,且采用顺序存储结构D. 元素按值有序,且采用链式存储结构28.在分块检索中,对256个元素的线性表分成 16 块最好,每块的最佳长度是 16 ;若每块的长度为8,其平均检索长度为 21 ;29.假定有K 个关键字互为同义词,若用线性探测法把这K 个关键字存入散列表中,至少要进行 D 次探测; A. K-1次 B. K 次 C. K+1次D. KK+1/2次30.在n 个记录的有序顺序表中进行折半查找,最大的比较次数是⎣⎦1log 2+n ;31.Hash 技术广泛应用于查找过程,选择Hash 函数的标准是 和 ;处理冲突的技术有优有劣,其共同标准是 ;32.在下述排序算法中,所需辅助存储空间最多的是 B ,所需辅助存储空间最小的是 C ,平均速度最快的是 A ; A.快速排序B. 归并排序C. 堆排序33.在文件局部有序或文件长度较小的情况下,最佳内部排序的方法是 A ;A. 直接插入排序B. 冒泡排序C. 简单选择排序34.快速排序在最坏情况下时间复杂度是On2,比 A 的性能差;A. 堆排序B. 冒泡排序C. 简单选择排序35.若需在Onlogn的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是C ;A. 快速排序B. 堆排序C. 归并排序D. 希尔排序36.如果只想得到1000个元素组成的序列中第5个最小元素之前的部分排序的序列,用B 方法最快;A. 冒泡排序B. 快速排序C. 希尔排序D. 堆排序E. 简单选择排序37.以下结点序列是堆的为 A ;A. 100,90,80,60,85,75,20,25,10,70,65,50B. 100,70,50,20,90,75,60,25,10,85,65,8038.若要尽可能快地完成对实数数组的排序,且要求排序是稳定的,则应选 C ;A. 快速排序B. 堆排序C. 归并排序D. 希尔排序39.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为 A 排序法;A. 插入排序B. 交换排序C. 选择排序D. 归并排序40.直接插入排序在最好情况下的时间复杂度为 B ;A. OlognB. OnC. OnlognD. On241.下面函数是将任意序列调整为最大堆的算法,请将空白部分填上:将任意序列调整为最大堆通过不断调用adjust函数,即fori=n/2;i>0;i-- adjustlist, i, n;其中list为待调整序列所在数组从下标1开始,n为序列元素的个数;void adjustint list, int root, int n{/将以root为下标的对应元素作为待调整堆的根,待调整元素放在list数组中,最大元素下标为n/ int child,rootkey;rootkey = 1 ;child = 2root;whilechild < n{ifchild<n && listchild<listchild+12 ;ifrootkey > listchildbreak;else{list 3 =listchild;4 ;}}list 5 =rootkey;}参考答案:1 listroot2 child++;3 child/24 child = 2;5 child/241.表是一种数据结构,链表是一种 1 ;队列和栈都是线性表,栈的操作特性是 2 ,队列的操作特性是 3 ;今有一空栈S,对下列待进栈的数据元素序列a,b,c,d,e,f依次进栈、进栈、出栈、进栈、进栈、出栈的操作,则此操作完成后,栈S的栈顶元素为 4 ,栈底元素为5 ;供选答案:1: A. 非顺序存储线性表 B. 非顺序存储非线性表C. 顺序存储线性表D. 顺序存储非线性表2: A. 随机进出 B. 先进后出C. 先进先出D. 出优于进3: A. 随机进出 B. 先进后出C. 后进后出D. 进优于出4: A. f B. cC. aD. b5: A. b B. cC. aD. d答案:ABCBC42.操作系统主要是对计算机系统全部 1 进行管理,以方便用户、提高计算机使用效率的一种系统软件;它的主要功能有:处理机管理、存储管理、文件管理、 2 管理和设备管理等;Windows 和Unix是最常用的两类操作系统;前者是一个具有图形界面的窗口式的 3 系统软件,后者是一个基本上采用 4 语言编制而成的的系统软件;在 5 操作系统控制下,计算机能及时处理由过程控制反馈的信息并作出响应;供选答案:1: A. 应用软件 B. 系统软硬件C. 资源D. 设备2: A. 数据 B. 作业C. 中断D. I/O3: A. 分时 B. 多任务C. 多用户D. 实时4: A. PASCAL B. 宏C. 汇编D. C5: A. 网络 B. 分时C. 批处理D. 实时答案:CBBDD43.本程序从键盘读入整数,并按从大到小的顺序输出输入整数中互不相等的那些整数;程序一边读入整数,一边构造一个从大到小顺序链接的链表,直至不能从键盘读入整数,然后顺序输出链表上各表元的整数值;主函数每读入一个整数,就调用函数insert,函数insert将还未出现在链表上的整数按从大到小的顺序插入到链表中;为了插入方便,链表在表首有一个辅助表元;阅读下列C代码,在 n 处填入相应的字句以完成上述功能;include <stdio.h>include <malloc.h>define NULL 0typedef struct node{int val;struct node next;}NODE;void insertNODE list,int x{NODE u, v, p;u = list; v = u->next;while 1 && x < v->val{ /寻找插入位置/u=v;v=u->next;}ifv==NULL || 2 { /判断是否要插入表元/p = NODE mallocsizeofNODE;p->val = x; /生成新表元/3 = v;4 = p; /插入新表元/}}main{int x;NODE head, p;/首先建立只有辅助表元的空链表/head = NODE mallocsizeofNODE;5 =NULL;printf“Enter Integers:\n”;whilescanf“%d”,&x == 1 /反复读入整数插入链表/inserthead,x;forp=head->next;p=NULL;p=p->next /输出链表/printf“%d\t”,p->val;printf“\n”;}答案:1 v = NULL或v2 x > v->val 或 x = v->val3 p->next4 u->next5 head->next44.计算机数据处理的对象是具有不同结构的各种数据,可以访问的最小数据信息单位是1 ,可以引用的最小命名数据单位是2 ;线性表是最简单的一种数据结构,有顺序和链接两种存储方式;线性表按链接方式存储时,每个结点的包括 3 两部分;线性表的查找有 4 和 5 两种,但 5 只能用于顺序存储的情况; 供选答案:1: A. 数字 B. 字符C. 数据元素D. 数据项2: A. 结点 B. 记录C. 数据元素D. 数据项3: A. 数据值与符号 B. 数据与指针C. 数据与表名D. 头地址与尾地址4: A. 随机查找 B. 顺序查找C. 二分法查找D. 浏览5: A. 随机查找 B. 顺序查找C. 二分法查找D. 浏览答案:CDBBC45.本程序用于从链盘读入整数,插入到链表,或从链表删除一个整数;阅读下面的C代码,将应填入 n 处的字名写在答卷的对应栏内;include <stdio.h>include <malloc.h>typedef struct node{int val;struct node next;}NODE;NODE insNODE list, int x{ /将x按从小到大的次序插入链表/NODE u, v=list, p;for; v = NULL && x < v->val ; v = v->next;/寻找插入位置/ifv = NULL && x == v->val returnlist; /已有,被忽略/p = NODE mallocsizeofNODE;p->val=x; /生成新表元/ifv == list list = p;else 1 ;2 ;return list;}NODE delNODE list, int x{ /从链表中删除值为x的表元/NODE u, v;forv = list; v = NULL && x < v->valu; u=v;v=v->next;ifv = NULL && x == v->val{ /找到值为x的表元/ifv == list list = list->next;else 3 ;4 ; /释放空间/}else p rintf“没有找到\n”;returnlist;}main{int x,ans;NODE list=NULL, p;while1{printf“\n输入1:将整数插入到链表;\n输入2:从链表删除一个整数;\n”;printf“其它整数,结束程序;\n\t请输入选择”;scanf%d,&ans;if 5 return;printf“输入整数:”;scanf“%d”,&x;ifans==1 list=inslist,x;else list=dellist,x;forp=list;p=NULL;p=p->nextprintf“%4d”,p->val;}}答案:1 u->next = p;2 p->next = v3 u->next = v->next4 freev5 ans = 1 && ans = 246. 从未排序的序列中,依次取出元素,与已排序序列的元素比较后,放入已排序序列中的恰当位置上,这是 1 排序;从未排序的序列中,挑选出元素,放在已排序序列的某一端位置,这是 2 排序;逐次将待排序的序列中的相邻元素两两比较,凡是逆序则进行交换,这是 3 排序;如果整个排序过程都在内存中进行,称为4 排序;排序算法的复杂性与排序算法的5 有关;供选答案:1: A. 选择 B. 插入C. 比较D. 归并2: A. 选择 B. 插入C. 比较D. 归并3: A. 冒泡 B. 交换C. 比较D. 散列4: A. 外部 B. 内部C. 外存D. 内存5: A. 运算量大小与占用存储多少B. 运算量大小与处理的数据量大小C. 并行处理能力和占用存储多少D. 占用存储多少和处理的数据量大小答案:BAABA47.操作系统是对计算机资源进行的 1 系统软件,是 2 的接口;在处理机管理中,进程是一个重要的概念,它由程序块、 3 和数据块三部分组成,它有3种基本状态,不可能发生的状态转换是 4 ;虚拟存储器的作用是允许程序直接访问比内存更大的地址空间,它通常使用 5 作为它的一个主要组成部分;供选答案:1: A. 输入和输出 B. 键盘操作C. 管理和控制D. 汇编和执行2: A. 软件和硬件 B. 主机和外设C. 高级语言和机器语言D. 用户和计算机3: A. 进程控制块 B. 作业控制块C. 文件控制块D. 设备控制块4: A. 运行态转换为就绪态 B. 就绪态转换为运行态C. 运行态转换为等待态D. 等待态转换为运行态5: A. 软盘 B. 硬盘C. CDROMD. 寄存器答案:CDADB48. A 是信息的载体,它能够被计算机识别、存储和加工处理;A. 数据B. 数据元素C. 结点D. 数据项49.下列程序段的时间复杂度为 C ;fori=1;i<n;i++{y=y+1;forj=0;j<=2n;j++ x++;}供选答案:A. On-1B. O2nC. On2D. O2n+150.下面程序段的时间复杂度为 D ;i=1;whilei<=n i=i2;供选答案:A. O1B. OnC. On2D. Olog2n51.下面程序段的时间复杂度为 B ;a=0;b=1;fori=2;i<=n;i++{s=a+b;b=a;a=s;}供选答案:A. O1B. OnC. Olog2nD. On252.数据结构是一门研究非数值计算的程序设计问题中,计算机的 A 以及它们之间的关系和运算等的学科;A.操作对象B. 计算方法C. 逻辑存储D. 数据映象53.在数据结构中,从逻辑上可以把数据结构分成 C ;A. 动态结构和静态结构B. 紧凑结构和非紧凑结构C. 线性结构和非线性结构D. 内部结构和外部结构54.算法分析的目的是 C ;A. 找出数据结构的合理性B. 研究算法中输入和输出的关系C. 分析算法的效率以求改进D. 分析算法的易懂性和文档性55.算法分析的两个主要方面是 4 ;A. 间复杂性和时间复杂性B. 正确性和简明性C. 可读性和文档性D. 数据复杂性和程序复杂性56.一个线性顺序表第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址为B ;A. 110B. 108C. 100D. 12057.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为P1,P2,P3,…,P n,若P1=n,则P i为 C ;A. iB. n-iC. n-i+1D.不确定58.对于一个栈,给出输入项A,B,C;如果输入项序列由A,B,C所组成,则不可能产生的输出序列是A ;A. CABB. CBAC. ABCD. ACB59.设有如下的单链表的按序号查找的算法,其时间复杂度为 B ;LinkNode GetNodeLinklist head, int i{int j;ListNode p;P = head; j=0;whilep->next && j<i{p = p->next;j++;}ifi==jreturnp;elsereturnNULL;}供选答案:A. On2B. O2nC. On3D. Ologn60.二维数组A mn按行序为主顺序存放在内存中,每个数组元素占1个存储单元,则元素a ij的地址计算公式是 C ;A. LOCa ij = LOCa11+i-1m+j-1B. LOCa ij = LOCa11+j-1m+i-1C. LOCa ij = LOCa11+i-1n+j-1D. LOCa ij = LOCa11+j-1n+i-161.以下哪一个不是队列的基本运算 C ;A. 从队尾插入一个新元素B. 从队列中删除第i个元素C. 判断一个队列是否为空D. 读取队头元素的值62.在一个长度为n的顺序表中,向第i个元素之前插入一个新元素,需向后移动 B 个元素;A. n-iB. n-i+1C. n-i-1D. i63.从一个长度为n的顺序表中删除第i个元素时,需向前移动 A 个元素;A. n-iB. n-i+1C. n-i-1D. i64.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队首指针和队尾指针,则判断队空的条件是 B ;A. front=rear+1B. front=rearC. front+1=rearD. front=065.从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较 D 个结点;A. nB. n/2C. n-1/2D. n+1/266.一个栈的入栈序列是a,b,c,d,e,则栈不可能的输出序列是 C ;A. edcbaB. decbaC. dceabD. abcde67.栈结构通常采用的两种存储结构是 A ;A. 顺序存储结构和链表存储结构B. 散列方式和索引方式C. 链表存储结构和数组D. 线性存储结构和非线性存储结构68.判断一个顺序栈ST最多元素为mo为空的条件是 B ;A. ST->top<>0B. ST->top=0C. st->top<>moD. st->top==mo69.不带头结点的单链表head为空表的判定条件是 A ;A. head==NILLB. head->next==NULLC. head->next==headD. head = NULL70.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在p和q之间插入s结点,则应执行C ;A. s->next = p->next; p->next=s;B. p->next = s->next; s->next=p;C. q->next = s; s->next=p;D. p->next = s; s->next=q;71.假设双向链表结点的类型如下:typedef struct Linknode{int data;struct Linknode lLink; /前驱结点指针/struct Linknode rLink; /后继结点指针/}下面给出的算法是要把一个q所指新结点,作为非空双向链表中的p所指的结点前驱结点插入到该双向链表中,能正确完成要求的算法段是 C ;A.q->rLink=p; q->lLink=p->lLink; p->lLink=q; p->lLink->rLink=q;B. p->lLink=q, q->rLink=p; p->lLink->rLink=q; q->lLink=p->lLink;C. q->lLink=p->lLink; q->rLink=p;p->lLink->rLink=q;p->lLink=q;D. 以上均不对72.串是一种特殊的线性表,其特殊性体现在 B ;A. 可以顺序存储B. 数据元素是一个字符C. 可以链接存储D. 数据元素可以是多个字符73.设有两个串p和q,求q在p中首次出现的位置的运算称作 B ;A. 连接B. 模式匹配C. 求子串D. 求串长74.设串s1=”ABCDEFG”,s2=”PQRST”,函数conx,y返回x和y串的连接串,subss,I,j返回串s的从序号i的字符开始的j个字符组成的子串,lens返回串s的长度,则consubs1,2,lens2,subs1,lens2,2的结果是 D ;A. BCDEFB. BCDEFGC. BCPQRSTD. BCDEFEF75.常对数组进行的两种基本操作是 C ;A. 建立和删除B. 索引和修改C. 查找和修改D. 索引和查找76.稀疏矩阵一般的压缩存储方法有两种,即C ;A. 二维数组和三维数组B. 三元组和散列C. 三元组和十字链表D. 散列和十字链表77.对下图所示的二叉表,按先根次序遍历得到的结点序列为 B ;A. ABCDHEIFGB. ABDHIECFGC. HDIBRAFCGD. HIDBEFGAC78.在一棵二叉树上,度为0的结点个数为n0,度为2的结点数为n2,则n0= A ;A. n2+1B. n2-1C. n2D. n2/279.某二叉树前序遍历结点的访问顺序是ABCDEFG,中序遍历结点的访问顺序是CBDAFGE,则其后序遍历结点的访问顺序是 A ;A.CDBGFEA B. CDGFEABC. CDBAGFED. CDBFAGE80.在下列存储形式中, D 不是树的存储形式;A. 双亲表示法B. 孩子链表表示法C. 孩子兄弟表示法D. 顺序存储表示法81. 已知一棵二叉树的中序序列为cbedahgijf,后序序列为cedbhjigfa,则该二叉树为B ;82. 已知一棵权集W={2,3,4,7,8,9}的哈夫曼树,其加权路径长度WPL为C ;A. 20B. 40C. 80D. 16083.已知一棵度为m的树中有n1个度为1的结点,n2个度为2的结点,…,n m个度为m的结点,问这棵树中叶子结点为C ;A. 1+n i I-1B. 1+n i I+1C. n1+n2+…+n mD. m·n m84.如下图所示的4棵二叉树中, C不是完全二叉树;85.设高度为h的二叉树上只有度为0或度为2的结点,则此类二叉树中所包含的结点数至少为B ;A. 2hB. 2h-1C. 2h+1D. h+186.如下图所示的二叉树的中序遍历序列是C ;A. abcdgefB. dfebagcC. dbaefcgD. defbagc87.已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,则其前序遍历序列为D ;A. acbedB. decabC. deabcD. cedba88.如果T2是由有序树T转换而来的二叉树,则T中结点的前序就是T2中结点的 A ;A. 前序B. 中序C. 后序D. 层次序89.树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序遍历、中序遍历和后序遍历;这里,我们把由树转化得到的二叉树叫做这棵树对应的二叉树;下面结论正确的是A ;A. 树的先根遍历序列与其对应的二叉树的先序遍历序列相同B. 树的先根遍历序列与其对应的二叉树的后序遍历序列相同C. 树的先根遍历序列与其对应的二叉树的中序遍历序列相同D. 以上均不对90. 深度为5的二叉树至多有C个结点;A. 16B. 32C. 31D. 1091. 在一非空二叉树的中序遍序序列中,根结点的右边 A ;A. 只有右子树的所有结点B. 只有右子树的部分C. 只有左子树的部分结点D. 只有左子树的所有结点 92. 树最适合用来表示 C ;A. 有序数据元素B. 无序数据元素C. 元素之间具有分支层次关系的数据D. 元素之间无联系的数据93. 设n,m 为一棵二叉树上的两个结点,在中序遍历时,n 在m 前的条件是 C ; A. n 在m 的右方 B. n 是m 的祖先 C. n 在m 的左方D. n 是m 的子孙94.对一个满二叉树,m 个树叶,n 个结点,深度为h,则 D ;A. n=h+mB. h+m=2nC. m=h-1D. n=2h-1 95.如果某二叉树的前序为stuwv,中序为uwtvs,则该二叉树后序为 C ;A. uwvtsB. vwutsC. wuvtsD. wutsv96.设待排序的记录为20,16,13,14,19,经过下列过程将这些记录排序;20,16,13,14,19 16,20,13,14,19 13,16,20,14,19 13,14,16,20,19 13,14,16,19,20所用的排序方法是 A ; A. 直接插入排序 B. 冒泡排序 C. 希尔排序D. 堆排序97.对下列4个序列用快速排序的方法进行排序,以序列的第一个元素为基础进行划分,在第一趟划分过程中,元素移动次数最多的是 A 序列; A. 70,75,82,90,23,16,10,68 B. 70,75,68,23,10,16,90,82 C. 82,75,70,16,10,90,68,23 D. 23,10,16,70,82,75,68,9098.用快速排序的方法对包含几个关键字的序列进行排序,最坏情况下,执行的时间为 D ; A. OnB. Olog 2nC.Onlog 2nD. On 299.在所有排序方法中,关键码即关键字比较的次数与记录的初始排列次序无关的是 D ; A. 希尔排序B. 冒泡排序C. 直接插入排序D. 直接选择排序100.在归并排序过程中,需归并的趟数为 C ; A. nB. nC. ⎣⎦n n 2logD. ⎣⎦n 2log101.一组记录的排序代码为{46,79,56,38,40,84},则利用堆排序的方法建立的初始堆为 B ;A. {79,46,56,38,40,80}B. {84,79,56,38,40,46}C. {84,79,56,46,40,38}D. {84,56,79,40,46,38}102.一组记录的排序代码为{46,79,56,38,40,84},则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为 C ;A. {38,40,46,56,79,84}B. {40,38,46,79,56,84}C. {40,38,46,56,79,84}D. {40,38,46,84,56,79}103.每次把待排序的区间划分为左、右两个子区间,其中左区间中元素的排序码均小于等于基准元素的排序码,右区间中元素的排序码均大于等于基准元素的排序码,此种排序方法叫做 B ;A. 堆排序B. 快速排序C. 冒泡排序D. 希尔排序104.一组记录的排序码为一个字母序列{Q,D,F,X,A,P,N,B,Y,M,C,W},按归并排序方法对该序列进行一趟归并后的结果为 D ;A. D,F,Q,X,A,B,N,P,C,M,W,YB. D,F,Q,A,P,X,B,N,Y,C,M,WC. D,Q,F,X,A,P,N,B,Y,M,C,WD. D,Q,F,X,A,P,B,N,M,Y,C,W105.一组记录的排序码为{25,48,16,35,79,82,23,40,36,72},其中,含有5个长度为2的有序表,按归并排序方法对该序列进行一趟归并后的结果为 A ;A. 16,25,35,48,23,40,79,82,36,72B. 16.25,35,48,79,82,23,36,40,72C. 16,25,48,35,79,82,23,36,40,72D. 16,25,35,48,79,23,36,40,72,82106.设有1000个无序的元素,希望用最快的速度挑选出其中前10个最大的元素,最好选用C排序法;A. 冒泡排序B. 快速排序C. 堆排序D. 希尔排序107.在待排序的元素序列基本有序的前提下,效率最高的排序方法是 A ;A. 插入排序B. 选择排序C. 快速排序D. 归并排序108.用某种排序方法对线性表{25,84,21,47,15,27,68,35,20}进行排序时,元素序列的变化情况如下:1 25,84,21,47,15,27,68,35,202 20,15,21,25,47,27,68,35,843 15,20,21,25,35,27,47,68,844 15,20,21,25,27,35,47,68,84则所采用的排序方法是 D ;A. 选择排序B. 希尔排序C. 归并排序D. 快速排序109. 快速排序方法在C情况下最不利于发挥其长处;A. 要排序的数据量太大B. 要排序的数据中含有多个相同值C. 要排序的数据已基本有序D. 要排序的数据个数为整数110. 设有一个已按各元素的值排好序的线性表,长度大于2,对给定的值K,分别用顺序查找法和二分查找法查找一个与K相等的元素,比较的次数分别为s和b;在查找不成功的情况下,正确的s和b的数量关系是 B ;A. 总有s=bB. 总有s>bC. 总有s<bD. 与k值大小有关111. 如果要求一个线性表既能较快地查找,又能适应动态变化的要求,则可采用的方法是A ;A. 分块法B. 顺序法C. 二分法D. 哈希法112. 哈希表的地址区间为0-17,哈希函数为Hk=k mod 17;采用线性探测法处理冲突,并将关键字序列{26,25,72,38,8,18,59}依次存储到哈希表中;那么,元素59存放在哈希表中的地址是 D ; A. 8 B. 9C. 10D. 11113. 哈希表的地址区间为0-17,哈希函数为Hk=k mod 17;采用线性探测法处理冲突,并将关键字序列{26,25,72,38,8,18,59}依次存储到哈希表中;如果要访问元素59,则需要的搜索次数是C ;A. 2B. 3C. 4D. 5114.在计算机系统中,允许多个程序同时进入内存并运行,这种方法称为 D ;A. Spodling技术B. 虚拟存储技术C. 缓冲技术D. 多道程序设计技术115.分时系统追求的目标是 C ;A. 高吞吐率B. 充分利用内存C. 快速响应D. 减少系统开销116.引入多道程序的目的是 D ;A. 提高实时响应速度B. 增强系统交互能力C. 为了充分利用主存储器D. 充分利用CPU,减少CPU等待时间117.若把操作系统看作计算机系统资源的管理者,下列 D 不属于操作系统所管理的资源; A. 程序 B. 内存C. CPUD. 中断118. A 不属于多道程序设计的概念;A. 多个用户同时使用一台计算机的打印设备B. 多个用户同时进入计算机系统,并要求同时处于运行状态C. 一个计算机系统从宏观上进行作业的并行处理,但在微观上仍在串行操作D. 多个作业同时存放在主存并处于运行状态119.操作系统的CPU管理主要是解决 C ;A. 单道程序对CPU的占用B. 多道程序对CPU的占用C. 多道程序对CPU的分配D. 多道程序或单道程序对CPU的争夺120.分时操作系统是指 B ;A. 多个用户分时使用同一台计算机的某一个终端B. 多道程序分时共享计算机的软、硬件资源C. 多道程序进入系统后的批量处理D. 多用户的计算机系统121. A 不是实时系统的特征;A. 很强的交互性B. 具有对用户信息的及时响应性C. 具有很强的可靠性D. 有一定的交互性122.工业过程控制系统中,运行的操作系统最好是 B ;A. 分时系统B. 实时系统C. 分布式操作系统D. 网络操作系统123. 对处理事件有严格时间限制的系统是 B ;A. 分时系统B. 实时系统C. 分布式操作系统D. 网络操作系统。
大学计算机基础第五章
大学计算机基础第五章第五章软件技术基础1.程序设计语言(1)机器语言和汇编语言由计算机硬件系统可以识别的指令组成的语言称为机器语言。
汇编语言是将机器指令映射为一些可以被人读懂的助记符。
由于计算机只能识别机器语言,所以汇编语言通常需要通过汇编程序翻译为机器语言。
汇编语言的翻译软件称为汇编程序,它可以将程序员写的助记符直接转换为机器指令,然后由计算机去识别和执行。
用机器语言编写的程序是计算机可以直接执行的程序。
用机器语言编写的程序,代码长度短,执行效率高。
但是,这种语言的缺点也很明显。
最主要的是编写机器语言程序必须要熟知CPU 的指令代码,编写程序既不方便,又容易出错,调试查错也非常困难。
而且编写的程序只能在特定的机器上运行,没有通用性。
(2)高级语言高级语言源程序翻译为指令代码有两种做法:编译或者解释。
编译通过编译程序来完成。
解释则是通过解释程序完成。
解释的结果产生可以直接执行的指令。
编译的结果是得到目标程序。
目标程序也是要经过连接才会得到可执行程序目前应用比较广泛的几种高级语言由FORTRAN/BASIC/PASCAL/C等。
(3)面向对象的语言(4)未来的语言2、语言处理程序语言处理程序是把源程序翻译成机器语言的程序,可分为三种:汇编程序、编译程序和解释程序。
(1)汇编程序把汇编语言源程序翻译成机器语言程序的程序称为汇编程序,翻译的过程称为汇编。
汇编程序在翻译源程序时,总是对源程序从头到尾一个符号一个符号地进行阅读分析,一般用两遍扫描完成对源程序的加工转换工作。
汇编语言在翻译的同时,还对各种形式的错误进行检查和分析,并反馈给用户,以便修改。
反汇编程序也是一种语言处理程序,它的功能与汇编程序相反,它能把机器语言程序转换成汇编语言程序。
(2)编译程序编译程序是把高级语言源程序(如Fortran、Pascal、C 等)翻译成目标程序(机器语言程序)的一种程序,翻译的过程称为编译。
(3)解释程序解释程序也是一种对高级语言源程序进行翻译处理及的程序。
软件技术基础知识
软件技术基础知识第一章1、算法和算法的特点2、数据结构:指相互关联的数据元素的集合。
数据结构分为逻辑结构和物理结构。
逻辑结构:表示了数据的逻辑关系(前后件关系)。
按照逻辑关系的不同分为:线形结构和非线形结构。
物理结构:表示了数据在计算机上的存放形式,也称存储结构。
按照存放形式的不同分为:顺序存储和链式存储。
3、线形结构的条件:4、线形结构通常称之为线性表。
顺序存储的线性表称为顺序表,链式存储的线性表称为线性链表。
5、对与空的数据结构可以为线性结构也可以为非线性结构。
6、顺序表和线性链表的特点。
7、栈和队列的特点。
8、栈和队列可以采用顺序存储也可以采用链式存储。
9、双向链表和循环队列。
10、树和二叉树11、二叉树的基本性质①第k层最多具有的结点数。
②深度为k的二叉树最具有的结点数。
③任何二叉树对为0的结点数和度为2的结点数的关系。
12、满二叉树的特点。
13、完全二叉树的特点。
14、二叉树的遍历15、顺序查找适用的情况。
对长度为n的线形表进行顺序查找最坏的情况需要查找的次数。
16、二分法查找适用的情况。
对长度为n的线形表进行二分法查找最坏的情况需要查找的次数。
17、排序的分类。
交换类排序:冒泡排序法,最坏的情况需要比较的次数。
插入类排序法,堆排序法。
第二章1、编程的良好习惯要求:根据需要添加相应的注释,应该有良好的视觉组织,在完成功能的前提下,优先考虑可读性和清晰性,然后在考虑效率。
2、注释的分类:序言性注释和功能性注释。
3、结构化程序设计的原则。
4、结构化程序设计的基本结构。
5、对象是属性和行为的封装体。
6、对象的基本特点:标识唯一性,分类性,多态性,封装性,摸快独立性。
7、类和实例之间的关系。
类是具有共同属性和方法对象的集合,是关于对象的抽象,一个具体的对象则称之为类的一个实例。
8、消息。
9、继承、多态性。
第三章1、软件的定义及软件的特点软件是程序、数据及相关文档的集合。
特点:2、软件危机是开软件过程中所遇到的一系列的严重问题。
计算机软件技术的基础知识
2、 数据结构基础
●基本概念和术语
(2)数据元素 (data
(1)数据(data): element): 是数据的
是客观事物的符号表示, 基本单位。有些情况下,
它能够被计算机识别、 储存和加工处理。它是
数据元素又称为元素、 结点(node)、记录 (record)。有时,一
计算机程序加工处理的 个元素可由若干数据项
e.排序操作:按给定要求对表中元素重新排 列。
并非任何时候都需要同时执行以上运算,对 于不同问题中的线性表,所需要执行的运算可能 不同。一般给出一组基本的运算,对于实际问题 中所涉及的更为复杂的运算,可以用基本运算的 组合来实现。
(3)线性表的存储结构
线性表的存储结构有两种:顺序存储结构和
链式存储结构。
…
L24
图3-2 链式存储结构示意图
结点1 结点2
结点3
结点4 结点5
由图3-2可见,数据元素之间的逻辑关系 是用指针来链接的。对于每个数据元素,除 了元素值以外,还有一个指针(或链)用来 指示另一个数据元素的地址。我们将这个由 数据元素的值和指针组成的总体称为结点, 表示一个数据元素。链表中各结点的位置在 内存中是任意的,通过指针将它们联系起来。 逻辑上最后的结点指针不指向任何地方,常 用“∧”表示。
如图3-2所示。
3-1所示。
由图3-1可知顺序结 构存储有以下特点:
A.存储结构的存储 密度大,存储空间利用 率高。
B.能够快速、随时 访问其中任意元素。
C.对该表进行插入 或删除操作时,为保证 线性表的连续性,则会 引起大量数据元素的移 动。
D.存储容量不宜扩 充。
……
…… ……
元素地址 内存状态 L1 元素1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第11章软件技术基础11.1 数据结构概述数据结构是讨论计算机系统中数据的组织形式及其相互关系的一门学科,它是计算机专业重要的专业基础课,也是其他从事计算机软件开发工作的人需要掌握的必备知识。
11.1.1什么是数据结构1.定义数据结构是在整个计算机科学与技术领域上广泛被使用的术语。
它用来反映一个数据的内部构成,即一个数据的数据构成成分,构成方式,以及结构。
数据结构有逻辑上的数据结构和物理上的数据结构之分。
逻辑上的数据结构反映成分数据之间的逻辑关系,而物理上的数据结构反映成分数据在计算机内部的存储安排。
数据结构是数据存在的形式。
数据结构是是信息的一种组织方式,其目的是为了提高算法的效率,对于相同的算法,用不同的数据结构表示其中的抽象数据类型会造成不同的执行效率。
它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。
2.有关概念(1)数据。
能被计算机识别、存储和加工的客观事物的描述,称为数据。
(2)结构。
结构是指事物间的相互关系和约束。
(3)数据元素。
数据元素是数据的基本单位,也称为数据结点。
(4)数据结构。
数据结构是讨论计算机系统中数据的组织形式及相互关系。
(5)算法。
算法是指为解决某一总是而需进行的有限操作的过程描述。
对一个数据结构,一般有如下的基本运算。
①遍历。
在数据结构里的各元素间移动或查看所有数据元素。
②插入。
在数据结构中添加元素。
③更新。
修改数据元素的数据项(又称为字段)的值。
④删除。
把指定的数据元素从数据结构中去掉。
⑤查找。
在数据结构中查找满足一定条件的数据元素。
⑥排序。
在保持数据元素个数不变前提下,将数据元素按指定顺序重新排列(一般针对线性逻辑结构。
)11.1.2数据结构的研究内容现实世界的事物及其相互关系是十分复杂的,为了能够用计算机分析、解决各种各样的问题,就必须研究客观事物以及它们的逻辑联系在计算机内的表达、存储的模型。
研究建立在这个模型之上的相应运算、处理的实现。
数据结构实际上就是研究以下问题。
(1)数据元素间的逻辑关系是什么?(2)适宜采用什么样的存储结构?(3)有哪些基本运算?如何实现?数据结构的3个层次如下:数据的逻辑结构、数据的存储结构和数据操作相关算法集合。
【例11-1】职工档案表如表11-1所示。
表11-1职工档案表这张档案表可称为一个数据结构,它是一个线性表结构,表中的每一行为一个数据元素(它是数据结构的基本单位),它由“姓名”、“性别”和“奖惩”等字段组成。
①表中数据元素的逻辑关系如下:对表中任一元素,与它相邻且在它前面的数据元素(也称为直接前趋)最多只有一个;与表中任一数据元素相邻且在它后面的数据元素(也称直接后继)最多也只有一个。
表中的第一个元素没有直接前趋,故称为开始数据元素,最后一个数据元素没有直接后继,故称为终点元素(例如:表中“表静”)所在元素的直接前趋为“胡一民”所在的数据元素;直接后趋为“张冬梅”所在的数据元素)。
②该表的存储方式(指计算机存储器如何表示这种关系):表中的数据元素是顺序地邻接在一片连续的单元之中,而不是用指针将这些元素链接在一起。
③对表元素怎样进行查找、删除和插入等操作方能提高数据操作效率。
通常,算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构。
11.1.3逻辑结构和物理结构1.逻辑结构数据是指由有限的符号(比如,“0”和“1”,具有其自己的结构、操作和相应的语句)组成的元素的集合。
结构是元素之间的关系的集合。
通常来说,一个数据结构DS可以表示为一个二元组。
DS=(D,S),这里D是数据元素的集合(或者是“结点”,可能含有“数据项”或“数据域”),S 是定义在D(或其他集合)上的关系的集合,S={R|R:D×D×…},称为元素的逻辑结构。
数据元素逻辑关系(逻辑结构)分为两大类。
(1)线性结构。
其逻辑特征如下:有且仅有一个开始元素和一个终点元素,所有数据元素最多只有一个直接前趋和一个直接后继,线性表就是一个典型的线性结构。
(2)非线性结构。
其逻辑特征如下:该结构中一个数据元素可能有多个直接前趋或直接后继。
①图结构。
数据元素的直接前趋和直接后继的个数不作限制。
②树结构。
有且仅有一个根元素无直接前趋,其他元素有且仅有一个直接前趋;每个元素都可能有多个直接后继;除根元素外,所有数据元素都存在一条从根元素到该元素的路径。
2.数据的物理结构数据的物理结构(存储结构)是指逻辑结构的存储镜像(image)。
数据结构DS的物理结构P对应于从DS的数据元素到存储区M(维护着逻辑结构S)的一个映射:P:(D,S)- M数据元素在计算机中的存储方法(即数据的存储结构,也称物理结构),分为4类。
(1)顺序存储方法。
把逻辑上相邻的数据元素存储在物理位置上相邻的存储单元里,元素间的逻辑关系由存储单元的邻接关系体现,其存储表示称为顺序存储结构、顺序存储方法主应用于线线的数据结构,如线性表和数组等,但非线性数据结构也可以通过某种线性化方法来实现顺序存储。
(2)链接存储方法。
并不要求逻辑上相邻的元素在物理位置上也相邻,元素的逻辑关系是由附加的指针字段表示,它要借助于程序语言的指针类型描述元素的存储地址,每个数据元素所占存储单元分成两部分:元素数据项和指针项(指出其后继或前趋元素的存储地址,从而形成一个链)。
(3)索引存储方法。
在存储元素信息的同时,还建立附加的索引表。
索引表的每一项称为索引项,索引项的一般形式如下:关键字,地址其中,关键字是能唯一标识一个元素的数据项,而地址则指示存储位置。
(4)散列存储方法(地址转移法)。
根据元素的关键字,通过某一散列函数直接计算出该元素的存储地址。
3.二者的关系同一种逻辑结构采用不同的存储方法,可得到不同的存储结构,采用何种存储方法来表示相应的逻辑结构,主要是根据算法来具体确定。
例如,线性表是一种逻辑结构,采用顺序方法的存储方法,该结构为顺序表;若采用链接方法的存储表示,该结构为链表:若采用散列方法11.2线性结构线性结构是数据结构中最简单且最常用的一种数据结构·其基本特点是鳌鱼亘鲜,良多刻易线性结构的数据元素可排成一个线性队列:a1,a2,a3,a4,…,a n其中, a1为起始元素a n为终点元素。
线性结构有各种类型,如线性表、姆和队列等。
11.2.1线性表在线性表中,除首元素外,每个元素有且仅有一个直接前驱;除尾元素外,每个元素有且仅有一个直接后继。
1.线性表的逻辑结构(1)概念。
线性表。
线性表是由n(n≥0)个数据元素(a1,a2,…,a n)构成的有限序列。
记作:L=((a1,a2,…,a n)其中,a1为首元素,a n为尾元素,表的长度(表长)为线性表中数据元素的数目。
空表。
不含任何数据元素的线性表称为空表。
【例11-2】线性表举例。
①字母表。
L1=(A,B,C…,Z)表长为26。
②姓名表。
L2=(李明,陈小平,王林,周爱玲)表长为4。
(2)线性表的特征。
对于L=(a1,a2,…,a i,a i-+1,…,a n)有如下特征。
①a i-1在a i之前,称a i-1是a i的直接前驱,其中1<i<n,。
②a i-+1在a i之后,称a i-+1是a i的直接后继,其中l<i<n。
③a1没有前驱。
④a n没有后继。
⑤a i(1<i<n)有且仅有一个直接前驱和一个直接后继。
(3)线性表的主要基本操作有以下几种。
①INITIA TE(L)。
初始化,设定一个空的线性表L,②LENGTH(L)。
求表长,返回线性表电教抿元素的个数。
③GET(L,i)。
取元素礴回线性表中第i个数据元素。
④LOCA TE(L,x)。
定位,返回值等于х的数据元素在线性表中的序号,若不存在这样的元素,则返回0。
2.线性表的物理结构(1)顺序表(顺序存储结构)。
当线性表采用顺庄存储结构时,称之为顺序表,即将线性表中的数据元素依次放到计算机存储器中一组地址连续的存储单元中,这种分配方式称为顺序分配或顺序映像。
由此得到的存储结构称为顺序存储结构或向量(一维数组)。
在顺序表中,数据元素按逻辑次序依次放在一组地址连续的存储单元里。
由于逻辑上相邻的元素存放在内存相邻的相邻单元里,所以顺序表的逻辑关系蕴含在存储单元的邻接关系中。
设顺序表中的每个元素占用k个存储单元,索引号为1的数据元素a1的内存地址为LOC(a1),则索引号为i的数据元素a i的内存地址为LOC(a i)=LOC(a1)+(i一1)k显然,顺序表中每个元素的存储地址是该元素在表中索引号的线性函数。
只要知道某元素在顺序表中的索引号,就可以确定其在内存中的存储位置。
顺序表的特点如下:①物理上相邻的元素在逻辑上也相邻;②可随机存取;③存储密度大,空间利用率高;对顺序表可进行插入、删除等操作,但运算效率低,需要大量的数据元素移位。
【例11-3】在如图11-1所示的顺序表中,在数据元素b,d之间插入c,则步骤如下:图11-1例11-3中的顺序表①先将f、e、d按次序向后移动一个位置;②将c放入元素移动后空出的位置上;③元素总数加1。
当元素个数为n时,要在第i个元素前插入新元素,需移动n-i+1个元素。
在等概率情况下,插入一个新元素平均需移动(n+1)/2个元素。
【例11-4】在如图11-2所示的顺序表中,删除元素。
,则步骤如下:图11-2例11-4中的顺序表①将d、e按次序向左移动一个位置;②元素个数减1。
元素个数为n时,要删除第i个元素,需移动n-i+1个元素。
在等概率情况下,删除一个元平均需移动n/2个元素。
(2)线性链表。
采用顺序表的运算效率较低,需要大量的数据元素的移位。
而采用链式存储结构的链表是用一组任意的存储单元来存放线性表的数据元素,这组存储单元既可以是连续的,也可以是不连续的,甚至可以是零星分布在内存中的任何位置上,从而可以大大提高存储器的使用效率。
①单链表(singly linked list)。
单链表是链式结构中最简单和最基本的结构。
单链表的每个数据元素都由两部分组成:存储元素值的数据域(data)和存储直接后继元素存储地址的指针域(next)。
其结构可用示意图11-3表示如下。
图11-3单链表结点的结构一个线性表a1,a2,…,a n,对应的单链表可用逻辑示意图11-4表示。
其中,h为链表的头指针,用以确定线性表中第一个元素对应的存储位置。
链表的终点元素无直接后继,,其指针域为空,在图中用^表示。
图11-4通常在单链表的第一元素之前附加一个称为头结点的元素。
头结点的数据域可以不存放任何数据,也可以存放像线性表的表长的数据信息,如图11-5表示a.单链表中的插入。
【例11-5】设有线性表a1,a2,…,a n用带头结点的单链表存储,现要求在数据元素a i图11-5的结点之前插人一个数据元素为x的结点。