软件技术基础--考试大作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件技术基础考试大作业

学号:

姓名:

年月日

第一部分数据结构程序设计(A4纸打印)

说明:

(1)共七组选题,每位学生选择一组选题,每组选题包含两个小题,每组选题人数为20--21人,每位学生独立完成所选题目(两个小题)。【建议按学号顺序选题】(2)内容包括题目描述、预备知识、问题分析、数据结构设计、源代码等。

选题一

1.约瑟夫(Joseph)问题

编号为1,…,n的n个人按顺时针方向围坐一圈,从第1号的人开始按顺时针方向自1开始顺序报数,报到m时停止报数(m

要求:建立循环单链表存储n个人的编号信息,进行问题的求解。

2.八皇后问题

八皇后问题,就是在一个8×8的棋盘上放置8个皇后。

规则:不允许两个皇后在同一行、同一列和同一对角线上,即在每一行、每一列只能有一个皇后,且任意两个皇后不能在同一对角线上。编写程序,将八皇后的所有摆法全部实现,并输出。

要求:八皇后问题是一个古老的搜索问题,使用递归方法实现。在递归过程中,一一测试每一种摆法,直至得出全部正确答案为止。当确定某个皇后的位置时,需要解决行、列、两条对角线上的冲突问题。

选题二

1.集合的基本运算

假设以两个递增有序排列的线性表A和B分别表示两个集合,现需建立有序线性表C、D 和E,其元素分别为A和B中元素的交集、并集和差集。请编写程序实现。

要求:输入线性表A和B,输出其交集、并集和差集。

2.二叉树的遍历及其应用

采用二叉链表作为二叉树的存储结构,实现如下功能:

(1)输入二叉树的特殊先序序列,建立二叉树。

(2)实现二叉树的层次遍历和中序遍历。

(3)求二叉树的深度。

(4)将二叉树中所有结点的左、右子树互相交换。

(5)求二叉树中叶子结点的数目。

编写程序实现,并输出相关数据。

选题三

1.括号匹配问题

假设一个算术表达式中可以包括3种括号:圆括号“(”和“)”、方括号“[”和“]”以及花括号“{”和“}”,且这3种括号可按任意的次序嵌套使用。设计一个程序,判定所给表达式中所含括号是否匹配。

要求:输入一个算术表达式,将其保存在带头结点的单链表或数组中,通过顺序栈实现括号匹配问题的求解。

2.有向图结点的入度、出度和度的求解

设计一个程序,对于具有N个结点的有向图,求每个结点的入度、出度和度。

要求:用邻接矩阵存储有向图。

选题四

1.舞伴问题

假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。请编写程序模拟上述舞伴配对问题。

要求:男士与女士的姓名与性别以同一数组输入,分别按性别建立两个队列,输出结果要求给出配成舞伴的男士与女士的姓名,以及未配对队伍中剩余元素的个数和队头元素的姓名。

2.稀疏矩阵的加减法

假设稀疏矩阵A和B(m行n列)都采用三元组表示,编写程序计算C=A+B,D=A-B,矩阵C和D也采用三元组表示。编写程序实现,并输出结果。

选题五

1.有向图遍历的实现

已知一个有向图,用邻接表作为其存储结构,编程实现深度优先遍历图中结点的操作,并输出结点序列。

2.图书借阅管理

图书馆存放一批图书,图书信息存放在库存表中,借阅信息存放在借阅表中,每次借阅时,需更新两个表。在借阅时,首先查询库存表,若找到要借的书,将借阅者的姓名、借阅号、书号、书名存入借阅表中,并修改库存表中相应书的库存量;若未找到,则给出“没有此书!”的信息。

要求:库存表、借阅表以结构数组实现。

选题六

1. 查找十字链表元素

已知一个稀疏矩阵以十字链表的形式存储,设计程序实现查找指定元素位置的算法。

2. 渡口管理问题

某汽车轮渡口,过江渡船每次能载10辆车过江。过江车辆分为客车类和货车类,上船有如下规定:同类车先到先上船,客车先于货车上渡船,且每上4辆客车,才允许上一辆货车;若等待客车不足4辆,则以货车代替,若无货车等待则允许客车都上船。编程实现模拟渡口管理的过程。

提示:分别构造客车队列和货车队列实现过程管理。

选题七

1. 求解迷宫问题

假设迷宫是一个m行n列的矩阵,该矩阵元素仅有0和1两种取值。其中元素0表示无障碍,元素1表示有障碍。设入口为(0,0),出口为(m-1,n-1)。每次移动时只能从一个无障碍的单元(矩阵元素位置)移到周围8个方向上任一无障碍的单元。请编写程序模拟上述求解迷宫问题,给出一条通过迷宫的路径或报告一个“无法通过”的消息。

提示:迷宫通过键盘输入的方式设置。

2. 构造循环队列

从键盘输入一个整数序列a1,a2,…a n,编程实现:当a i>0时,a i进队;当a i<0时,a i退队;当a i=0时,表示输入结束。

要求:将队列构造为循环队列,并写出入队和退队的函数,并能处理异常情况。

第二部分简述题(A4纸手写)

说明:每题要求字数不低于500字

1.简述软件生命周期各阶段的功能与作用。

2.简述使用UML(统一建模语言)进行面向对象分析与设计的步骤和方法。

3.简述数据库设计的过程。

4.简述数据库中的三种数据模型。

5.简述操作系统的发展过程。

6.简述存储器管理技术与组织结构。

相关文档
最新文档