ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:119.50KB ,
资源ID:29553851      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29553851.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(栈与队列.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

栈与队列.docx

1、栈与队列 实 验 报 告实验课程名称 数据结构与算法 实验项目名称 栈与队列 年 级 2010级 专 业 信息与计算机科学 学生姓名张胜(1007010162)郭小兵(1007010210) 潘曦(1007010211) 理 学 院实验时间: 2012 年 10 月 13 日学生实验室守则一、按教学安排准时到实验室上实验课,不得迟到、早退和旷课。二、进入实验室必须遵守实验室的各项规章制度,保持室内安静、整洁,不准在室内打闹、喧哗、吸烟、吃食物、随地吐痰、乱扔杂物,不准做与实验内容无关的事,非实验用品一律不准带进实验室。三、实验前必须做好预习(或按要求写好预习报告),未做预习者不准参加实验。四、

2、实验必须服从教师的安排和指导,认真按规程操作,未经教师允许不得擅自动用仪器设备,特别是与本实验无关的仪器设备和设施,如擅自动用或违反操作规程造成损坏,应按规定赔偿,严重者给予纪律处分。五、实验中要节约水、电、气及其它消耗材料。六、细心观察、如实记录实验现象和结果,不得抄袭或随意更改原始记录和数据,不得擅离操作岗位和干扰他人实验。七、使用易燃、易爆、腐蚀性、有毒有害物品或接触带电设备进行实验,应特别注意规范操作,注意防护;若发生意外,要保持冷静,并及时向指导教师和管理人员报告,不得自行处理。仪器设备发生故障和损坏,应立即停止实验,并主动向指导教师报告,不得自行拆卸查看和拼装。八、实验完毕,应清理

3、好实验仪器设备并放回原位,清扫好实验现场,经指导教师检查认可并将实验记录交指导教师检查签字后方可离去。九、无故不参加实验者,应写出检查,提出申请并缴纳相应的实验费及材料消耗费,经批准后,方可补做。十、自选实验,应事先预约,拟订出实验方案,经实验室主任同意后,在指导教师或实验技术人员的指导下进行。十一、实验室内一切物品未经允许严禁带出室外,确需带出,必须经过批准并办理手续。学生所在学院:理学院 专业:信息与计算机科学 班级:信计101班姓 名郭小兵学 号1007010210实验组1实验时间2012-10-10指导教师彭长根成 绩实验项目名称 栈与队列实验目的及要求:目的:通过编程实现多项式的运算

4、,复习数组和c语言的相关知识; 要求:画出流程图,在计算机上实现整个算法。实验硬件及软件平台:PC机,vc+6.0,。实验(或算法)原理:栈的逻辑结构和我们先前学过的线性表相同,如果它是非空的,则有且只有一个开始结点,有且只能有一个终端结点,其它的结点前后所相邻的也只能是一个结点(直接前趋和直接后继),但是栈的运算规则与线性表相比有更多的限制,栈(Stack)是仅限制在表的一端进行插入和删除运算的线性表,通常称插入、删除这一端为栈顶,另一端称为栈底。表中无元素时为空栈。栈的修改是按后进先出的原则进行的,我们又称栈为LIFO表(Last In First Out). 队列(Queue,念Q音)也

5、是一种运算受限的线性表,它的运算限制与栈不同,是两头都有限制,插入只能在表的一端进行(只进不出),而删除只能在表的另一端进行(只出不进),允许删除的一端称为队尾(rear),允许插入的一端称为队头 (Front) ,队列的操作原则是先进先出的,所以队列又称作FIFO表(First In First Out)。实验步骤:1根据算法事先写出相应程序。2启动PC机,进入vc集成环境,输入代码。3编译调试。4调试通过,计算出正确结果。实验内容(包括实验具体内容、算法分析、源代码等等):#include#include#include#define stack_init_size 200#define

6、stack_increment 10#define OVERFLOW 0#define OK 1#define ERROE 0#define TRUE 1#define FALSE 0typedef int Status;typedef struct int x; int y;PosType;typedef struct int ord; / 通道块在路径上的序号 PosType seat; /通道块在迷宫中的坐标位置 int di; /从此通道块走向下一通道块的方向SElemType;typedef struct SElemType *base; SElemType *top; int st

7、acksize;SqStack;int mg2020;void Random() int i,j,k; srand(time(NULL); mg10=mg11=mg1819=0; /将入口、出口设置为0即可通过for(j=0;j20;j+) mg0j=mg19j=1; /*设置迷宫外围不可走,保证只有一个出口和入口*/ for(i=2;i19;i+) mgi0=mgi-119=1; /*设置迷宫外围不可走,保证只有一个出口和入口*/ for(i=1;i19;i+) for(j=1;j=s.stacksize) s.base=(SElemType *)realloc(s.base,(s.stac

8、ksize+stack_increment) *sizeof(SElemType); if(!s.base)exit(OVERFLOW); s.top=s.base+s.stacksize; s.stacksize+=stack_increment; *s.top+=e; return OK;/出栈Status Pop(SqStack &s,SElemType &e) if(s.top=s.base) return ERROE; e=*-s.top; return OK;/下一步PosType NextPos(PosType &e,int dir) PosType E; switch(dir)

9、 case 1:E.x=e.x; /向下 E.y=e.y+1; break; case 2:E.x=e.x+1; /向右E.y=e.y; break; case 3:E.x=e.x; /向上 E.y=e.y-1; break; case 4:E.x=e.x-1; /向左 E.y=e.y; break; return E;/是否空栈Status StackEmpty(SqStack s) if (s.top=s.base) return OK; return OVERFLOW; /留下不能通过的足迹Status MarkPrint(PosType e) mge.xe.y=3; return OK

10、;/迷宫函数/ 若迷宫maze中从入口 start到出口 end的通道,则求得一条存放在栈中/ (从栈底到栈顶),并返回TRUE;否则返回FALSEStatus MazePath(int mg,PosType start,PosType end,SqStack &s) PosType curpos; InitStack(s); SElemType e; int curstep; curpos=start; / 设定当前位置为入口位置curstep=1; / 探索第一步 do if(Pass(curpos) / 当前位置可通过,即是未曾走到过的通道块 FootPrint(curpos); / 留

11、下足迹 e.di =1; e.ord = curstep; e.seat= curpos; Push(s,e); / 加入路径 if(curpos.x=end.x&curpos.y=end.y) printf(nn0_0 能到达终点!); return TRUE; curpos=NextPos(curpos,1); / 下一位置是当前位置的东邻 curstep+; / 探索下一步 else / 当前位置不能通过 if(!StackEmpty(s) Pop(s,e); while(e.di=4&!StackEmpty(s) MarkPrint(e.seat); Pop(s,e); if(e.di

12、4) e.di+; Push(s,e); / 留下不能通过的标记,并退回一步 curpos=NextPos(e.seat,e.di); /* 当前位置设为新方向的相邻块*/ /if /if /else while(!StackEmpty(s); printf(nn囧 ! 不能到达终点!); return FALSE;/打印迷宫void PrintMaze() int i,j; printf(运行路径:nn); for(i=0;i20;i+) for(j=0;j20;j+) if(mgij=0)printf( ); else if(mgij=1) printf(); /迷宫的墙 else if(

13、mgij=3) printf(); /不通的路 else if(mgij=7)printf(); /通过的路径 printf(n); printf(n);void main() SqStack S; PosType start,end; start.x=1;start.y=0; /起点坐标 end.x=18;end.y=19; /终点坐标 printf(n=迷宫游戏=); printf(n说明:不能走的区域t走不通的区域); printf(n 空格代表未到过的区域); printf(n 代表能通过的路径,指向终点); printf(n=); Random(); printf(nnTest 1:); MazePath(mg2020,start,end,S); PrintMaze(); system(pause); Random();printf(nTest 2:); MazePath(mg2020,start,end,S); PrintMaze(); system(pause); Random(); printf(nTest 3:); MazePath(mg2020,start,end,S); PrintMaze(); printf(n=程序退出,感谢使用!=n);实验结果与讨论:在做本实验的过程中,顺利完成实验的各个过程!指导教师意见:签名: 年 月 日

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

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