西电《软件技术基础》上机大作业答案Word文档下载推荐.doc

上传人:b****2 文档编号:14569422 上传时间:2022-10-23 格式:DOC 页数:28 大小:168KB
下载 相关 举报
西电《软件技术基础》上机大作业答案Word文档下载推荐.doc_第1页
第1页 / 共28页
西电《软件技术基础》上机大作业答案Word文档下载推荐.doc_第2页
第2页 / 共28页
西电《软件技术基础》上机大作业答案Word文档下载推荐.doc_第3页
第3页 / 共28页
西电《软件技术基础》上机大作业答案Word文档下载推荐.doc_第4页
第4页 / 共28页
西电《软件技术基础》上机大作业答案Word文档下载推荐.doc_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

西电《软件技术基础》上机大作业答案Word文档下载推荐.doc

《西电《软件技术基础》上机大作业答案Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《西电《软件技术基础》上机大作业答案Word文档下载推荐.doc(28页珍藏版)》请在冰豆网上搜索。

西电《软件技术基础》上机大作业答案Word文档下载推荐.doc

2.假设以数组sequ[m]存放循环队列的元素,同时设变量rear和quelen分别指示循环队列中队尾元素的位置和内含元素的个数。

编写实现该循环队列的入队和出队操作的算法。

提示:

队空的条件:

sq->

quelen==0;

队满的条件:

quelen==m。

循环队列)

实验三串

1.熟悉串的顺序存储结构

2.掌握串的基本运算及应用

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

模式匹配)

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

若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.无向图采用邻接矩阵存储,编写深度优先搜索遍历算法,从不同的顶点出发对无向图进行遍历。

无向图邻接矩阵)

B

C

A

D

E

F

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<

stdio.h>

malloc.h>

//顺序表结构类型定义

typedefchardatatype;

constintmaxsize=1024;

typedefstruct

{datatypedata[maxsize];

intlast;

}sequenlist;

voidcreate(sequenlist*&

);

voidprint(sequenlist*);

voidinvert(sequenlist*);

voidmain()

{

sequenlist*L;

create(L);

//建立顺序表

print(L);

//输出顺序表

invert(L);

//调用顺序表逆值的函数

}

L)

L=(sequenlist*)malloc(sizeof(sequenlist));

L->

last=0;

charch;

while((ch=getchar())!

='

*'

{

L->

last++;

data[L->

last]=ch;

}

voidprint(sequenlist*L)

for(inti=1;

i<

=L->

last;

i++)

printf("

%2c"

L->

data[i]);

printf("

\n"

//顺序表逆置

voidinvert(sequenlist*L)

intn=L->

last/2;

=n;

{

chartemp=L->

data[i];

data[i]=L->

last-i+1];

L->

last-i+1]=temp;

第1题

(2)

//单链表逆置的程序代码

//单链表结构类型定义

typedefstructnode

datatypedata;

structnode*next;

}linklist;

voidcreate(linklist*&

voidprint(linklist*);

voidinvert(linklist*);

linklist*head;

create(head);

print(head);

invert(head);

//调用单链表逆置的函数

//采用尾插法建立具有头结点的单链表

head)

linklist*s,*r;

head=(linklist*)malloc(sizeof(linklist));

r=head;

s=(linklist*)malloc(sizeof(linklist));

s->

data=ch;

r->

next=s;

r=s;

r->

next=NULL;

//输出单链表

voidprint(linklist*head)

linklist*p=head->

next;

while(p!

=NULL)

p->

data);

p=p->

//单链表逆置

voidinvert(linklist*head)

linklist*p,*q,*r;

p=head->

q=p->

while(q!

r=q->

q->

next=p;

p=q;

q=r;

head->

next->

第2题

//分解单链表的程序代码

//链表结构类型定义

{datatypedata;

structnode*next;

voidresolve(linklist*,linklist*,linklist*,linklist*);

voidinsert(linklist*,linklist*);

voidprint1(linklist*);

voidprint2(linklist*);

{linklist*head,*letter,*digit,*other;

create(head);

print1(head);

letter=(linklist*)malloc(sizeof(linklist));

//建立3个空循环链表

letter->

next=letter;

digit=(linklist*)malloc(sizeof(linklist));

digit->

next=digit;

other=(linklist*)malloc(sizeof(linklist));

other->

next=other;

resolve(head,letter,digit,other);

//调用分解单链表的函数

print2(letter);

//输出循环链表

print2(digit);

print2(other);

//建立单链表

v

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1