77范文网 - 专业文章范例文档资料分享平台

《软件技术基础》实验指导(含答案)

来源:网络收集 时间:2021-12-24 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

说明

每个实验题目含有一个main函数和一些函数,与实验题目相关的基本运算的函数定义和main函数定义的代码在附录以及对应的文件夹中给出,供上机实验参考使用。对于每个题目,只需要根据题目要求设计算法,补充函数定义,然后对程序进行编译、调试。

1

实验一 线性表

一、 实验目的

1.熟悉线性表的顺序和链式存储结构 2.掌握线性表的基本运算

3.能够利用线性表的基本运算完成线性表应用的运算

二、 实验内容

1.设有一个线性表E={e1, e2, … , en-1, en},设计一个算法,将线性表逆置,即使元素排列次序颠倒过来,成为逆线性表E’={ en , en-1 , … , e2 , e1 },要求逆线性表占用原线性表空间,并且用顺序表和单链表两种方法表示,分别用两个程序来完成。(文件夹:顺序表逆置、单链表逆置)

2.已知由不具有头结点的单链表表示的线性表中,含有三类字符的数据元素(字母、数字和其他字符),试编写算法构造三个以循环链表表示的线性表,使每个表中只含有同一类的字符,且利用原表中的结点空间,头结点可另辟空间。(文件夹:分解单链表)

实验二 栈和队列

一、 实验目的

1.熟悉栈和队列的顺序和链式存储结构 2.掌握栈和队列的基本运算

3.能够利用栈和队列的基本运算完成栈和队列应用的运算

二、 实验内容

1.设单链表中存放有n个字符,试编写算法,判断该字符串是否有中心对称的关系,例如xyzzyx是中心对称的字符串。(提示:将单链表中的一半字符先依次进栈,然后依次出栈与单链表中的另一半字符进行比较。)(文件夹:判字符串中心对称)

2.假设以数组sequ[m]存放循环队列的元素,同时设变量rear和quelen 分别指示循环队列中队尾元素的位置和内含元素的个数。编写实现该循环队列的入队和出队操作的算法。提示:队空的条件:sq->quelen==0;队满的条件:sq->quelen==m。(文件夹:循环队列)

实验三 串

一、 实验目的

1. 熟悉串的顺序存储结构 2. 掌握串的基本运算及应用

二、 实验内容

1.串采用顺序存储结构,编写朴素模式匹配算法,查找在串中是否存在给定的子串。(文件夹:模式匹配)

2.若S是一个采用顺序结构存储的串,利用C的库函数strlen和strcpy(或strncpy)编写一算法void SteDelete(char*S,int I,int m),要求从S中删除从第i个字符开始的连续m个字符。

 

2

若i≥strlen(S),则没有字符被删除;若i+m≥strlen(S),则将S中从位置i开始直至末尾的字符均删除。(文件夹:删除子串)

实验四 数组

一、 实验目的

1.熟悉数组的结构

2.掌握矩阵的压缩存储

3.能够对数组和矩阵的压缩存储进行运算

二、 实验内容

1. 若在矩阵Am×n中存在一个元素A[i][j],其满足A[i][j]是第i行元素中最小值,且又

是第j列元素中最大值,则称此元素为该矩阵的一个马鞍点。用二维数组存储矩阵Am

(文件夹:找马鞍点) ×n ,设计算法求出矩阵中所有马鞍点。

2. A和B是两个n×n阶的对称矩阵,以行为主序输入对称矩阵的下三角元素,压缩存储

存入一维数组A和B,编写一个算法计算对称矩阵A和B的乘积,结果存入二维数组C。(文件夹:对称矩阵相乘)

实验五 树

一、 实验目的

1.熟悉二叉树的链式存储结构

2.掌握二叉树的建立、深度优先递归遍历等算法 3.能够利用遍历算法实现一些应用

二、 实验内容

1.已知二叉树采用二叉链表存储结构,如果左、右子树非空,且左子树根结点大于右子树

根结点,则交换根结点的左、右子树。即按要求交换二叉树及子树的左、右子树。(文件夹:交换左右子树)

2.采用二叉链表结构存储一棵二叉树,编写一个算法统计该二叉树中结点总数及叶子结点

总数。(文件夹:统计二叉树结点)

实验六 图

一、 实验目的

1.熟悉图的邻接矩阵和邻接表的存储结构 2.熟悉图的邻接矩阵和邻接表的建立算法 3.掌握图的遍历算法

二、 实验内容

1. 无向图采用邻接矩阵存储,编写深度优先搜索遍历算法,从不同的顶点出发对无向图进行遍历。(文件夹:无向图邻接矩阵)

 

3

 

A B D E F C G H 实验七 排序

一、 实验目的

1.熟悉各种内部排序算法

2.能够编写程序显示排序过程中各趟排序的结果 3.能够编写一些排序的算法

二、 实验内容

1. 采用希尔排序方法对顺序表中的证型数据进行排序,设计希尔排序算法并显示每趟排序

的结果。(文件夹:希尔排序)

2. 编写一个双向起泡的排序算法,即在排序过程中交替改变扫描方向,同时显示各趟排序

的结果。(文件夹:双向起泡排序)

实验八 查找

一、 实验目的

1.熟悉线性表、二叉排序树和散列表的查找 2.能够编写一些查找的算法

二、 实验内容

1. 18个记录的关键字为22、12、13、8、9、20、33、42、44、38、24、48、60、58、74、

49、86、53,编写分块查找的算法进行查找。(文件夹:分块查找)

2. 编写一个判别给定的二叉树是否为二叉排序树的算法,设二叉树以二叉链表存储表示,

结点的数据域只存放正整数。(文件夹:判断二叉排序树)

附录:原代码

实验一:第1题(1) //顺序表逆置的程序代码 #include #include //顺序表结构类型定义 typedef char datatype;

 

4

const int maxsize=1024; typedef struct

{ datatype data[maxsize]; int last; }sequenlist;

void create(sequenlist*&); void print(sequenlist*); void invert(sequenlist*);

void main() { sequenlist*L; create(L);//建立顺序表 print(L);//输出顺序表 invert(L);//调用顺序表逆值的函数 print(L);//输出顺序表 }

//建立顺序表

void create(sequenlist*&L) { L=(sequenlist*)malloc(sizeof(sequenlist)); L->last=0; char ch; while((ch=getchar())!='*') { L->last++; L->data[L->last]=ch; } }

//输出顺序表

void print(sequenlist*L) { for(int i=1;i<=L->last;i++) printf( printf(}

//顺序表逆置

void invert(sequenlist*L) { int n=L->last/2; for(int i=1;i<=n;i++) { char temp=L->data[i]; L->data[i]=L->data[L->last-i+1]; L->data[L->last-i+1]=temp; }

 

5

 

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库《软件技术基础》实验指导(含答案)在线全文阅读。

《软件技术基础》实验指导(含答案).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/476088.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: