哈尔滨师范大学计算机科学与信息工程学院实验报告手册

上传人:绿** 文档编号:61837099 上传时间:2018-12-13 格式:DOC 页数:34 大小:582KB
返回 下载 相关 举报
哈尔滨师范大学计算机科学与信息工程学院实验报告手册_第1页
第1页 / 共34页
哈尔滨师范大学计算机科学与信息工程学院实验报告手册_第2页
第2页 / 共34页
哈尔滨师范大学计算机科学与信息工程学院实验报告手册_第3页
第3页 / 共34页
哈尔滨师范大学计算机科学与信息工程学院实验报告手册_第4页
第4页 / 共34页
哈尔滨师范大学计算机科学与信息工程学院实验报告手册_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《哈尔滨师范大学计算机科学与信息工程学院实验报告手册》由会员分享,可在线阅读,更多相关《哈尔滨师范大学计算机科学与信息工程学院实验报告手册(34页珍藏版)》请在金锄头文库上搜索。

1、哈尔滨师范大学计算机科学与信息工程学院实验报告手册课程名称:数据结构 指导教师:专业: 物联网工程专业 2017年2018年第一学期姓名: 学号:年级: 2016 级 班级: 02 班 实验报告填写及打印要求:1、 A4纸正反面打印;2、 实验报告封面、封面上填写内容必须打印;3、 实验报告内容,学生可手写也可打印,可根据内容自行加页;4、 指导教师必须手写签名;5、 左侧装订。实验报告内容实验题目:线性表及其应用实验目的:掌握线性表的定义、不同存储结构及基本运算。实验要求: 约瑟夫(Joseph)问题描述为:编号为1,2,3,n的n个人按顺时针方向围坐一圈,从第s个人开始从1报数,数到第m的

2、人出列;然后从它在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。设计一个程序求出列顺序。实验器材:电脑DEVC+实验步骤/程序源代码:#include#includetypedef struct node/定义节点类型 (单链表的定义结构) int num;/用来对每个节点进行编号标序 struct node *next;/递归定义 LNode,*Linkls; /LNode; /typetef LNode * LinkList void create(int m,Linkls &head) Linkls p; head=(LNode*)malloc(sizeof(

3、LNode); /申请头结点的储存空间 head-next =head;/让链表成为一个空的循环链表 for(int i=m;i1;i-) if(!(p=(LNode*)malloc(sizeof(LNode)exit(-1);/申请存储空间 p-num=i; p-next=head-next; head-next=p; head-num=1; int main() int n,i,m,s=1,j=1; LNode*head,*p,*q; printf(请输入开始的总人数n:n); scanf(%d,&n); printf(请输入从第s个开始的 s值:n); scanf(%d,&s); pri

4、ntf(请输入m的值:n); scanf(%d,&m);/输入数据 create(n,head);/产生一个以head为头结点,有n个元素的循环列表 printf(进行一次删除操作:n); for(i=1,p=head;inext; while(n-) for(i=1;inext; q=p-next; printf(第%d次出局的数:%dn,j+,q-num);/输出数到得数字,后面进行删除 p-next=q-next; p=p-next; free(q);/释放q所指向空间 system(pause); return 0; 实验结果分析: 实验日期: 2017年10月23日成绩评定:优秀(1

5、00-90分)良好(89-80分)中等(79-70分)及格(69-60分)不及格(60-0分) 教师签名:年 月 日实验报告内容实验题目:栈和队列及其应用实验目的:掌握栈和队列的定义、存储结构及基本运算,理解栈与递归的应用。设计一个程序,演示用算符优先法对算术表达式求值的过程。实验要求:为实现算符优先算法求表达式的值,需要建立两个栈,一个是寄存运算符OPTR,一个是寄存操作数或运算结果OPND,先初始化栈,然后边扫描表达式边计算。实验器材:电脑DEVC+实验步骤/程序源代码:/*链栈实现表达式求值*/ #includeusing namespace std;const char oper7=+

6、,-,*,/,(,),#;#define OK 1#define ERROR 0#define OVERFLOW -2typedef char SElemType;typedef int Status;typedef struct SNode /链栈的定义格式 int data; struct SNode*next; /SNode链栈的名字 SNode, *LinkStack;Status InitStack(LinkStack &S) /构造一个空栈 S = NULL; return OK;bool StackEmpty(LinkStack S) /判断链栈是否为空 if(!S) retur

7、n true; return false;Status Push(LinkStack &S,SElemType e) / 插入元素e,使之成为栈顶元素 SNode*p=new SNode; if(!p) return OVERFLOW; p-data = e; /插入元素e p-next = S; S = p; return OK;Status Pop(LinkStack &S,SElemType &e) /删除栈顶元素 SNode *p; if(!S) return ERROR; e = S-data; p = S; S = S-next; delete p; return OK;Statu

8、s GetTop(LinkStack &S) /返回栈顶元素 if(!S) return ERROR; return S-data;bool In(char ch) /判断ch是否是运算符 for(int i=0;i7;i+) if(ch=operi) return true; return false;char Precede(char theta1,char theta2) /判断运算符优先级 if (theta1 = ( & theta2 = ) | (theta1 = # & theta2 = #) return =; else if(theta1 = ( | theta1 = # |

9、 theta2 = ( | (theta1 = + | theta1 = -) & (theta2 = * | theta2 = /) return ;char Operate(char first,char theta,char second) /计算两数运算结果 switch (theta) case +: return (first - 0) + (second - 0) + 48; case -: return (first - 0) - (second - 0) + 48; case *: return (first - 0) * (second - 0) + 48; case /: return (first - 0) / (second - 0) + 48; return 0;char EvaluateExpression() /算术表达式求值的算符优先算法,设OPTR 和OPND 分别为运算符栈和操作数栈 LinkStack OPTR, OPND; char ch, the

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号