




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 / 38 队列实验报告总结 班级 信工 082 学号 XX06030202 姓名 李霄 实验组别 实验日期 2016-12-20 室温 报告日期 2016-12-20 成绩 报告内容: (目的和要求,原理,步骤,数据,计算,小结等 ) 实验名称: 实验三 队列的表示及实现 实验目的: 1、通过实验进一步理解队列的 “ 先进先出 ” 特性。 2、掌握队列的逻辑结构及顺序存储结构和链式存储结构。 3、熟练运用 C语言实现队列的基本操作。 4、灵活运用队列解决实际问题。 实验内容: 2 / 38 1、实现链队列,并编写主函数进行测试。测试方法为:依次 10、 20、 30、 40,然后,出对 3 个元素。再次入队 50、60,然后出队 3个元素。查看屏幕上显示的结果是否与你分析的结果一致。 2、在 1 的基础上,再出队 1 个元素。查看屏幕上显示的结果是否与你分析的结果一致。 3、编写主函数比较取队头元素操作和出队操作。 实验学时: 2学时 实验程序 #include #include typedef int DataType; typedef struct 3 / 38 DataType data; struct QNode* next; LQNode,*PQNode; typedef struct PQNode front,rear; LinkQueue; int InitQueue(LinkQueue *Q) Q-front=Q-rear=(PQNode)malloc(sizeof(LQNode); 4 / 38 if (!Q-front)printf(errorsn);return 0; Q-front-next=NULL; return 1; int QueueEmpty(LinkQueue Q) if(=) return 1; else return 0; 5 / 38 int EnQueue(LinkQueue *Q,DataType e) PQNode p; p=(PQNode)malloc(sizeof(LQNode); if(!p) printf(nnerrorsnn); return 0; p-data=e; p-next=NULL; 6 / 38 Q-rear-next=p; Q-rear=p; return 1; int DeQueue(LinkQueue *Q,DataType *e) PQNode p; if( Q-front=Q-rear) printf(nerrorsn); return 0; 7 / 38 p=Q-front-next; *e=p-data; Q-front-next=p-next; free(p); if(Q-rear=p) Q-rear=Q-front; return 1; int GetHead(LinkQueue Q,DataType *e) 8 / 38 PQNode p; if(=) printf(nerrorn); return 0; p=next; *e=p-data; printf(%d,*e); main() 9 / 38 int i,*e,m; LinkQueue Q; int a6=10,20,30,40,50,60; printf(she ji yi shun xu wei:n); InitQueue(&Q); for(i=0;i EnQueue(&Q,ai); for(i=0;i DeQueue(&Q,&e); printf(%dt,e); 10 / 38 for(i=4;i EnQueue(&Q,ai); while(!QueueEmpty(Q) DeQueue(&Q,&e); printf(%dt,e); printf(nhui che yun xing sheji2n); getchar(); DeQueue(&Q,&e); printf(nhui che yun xing qu dui tou yuan su:n); getchar(); for(i=0;i EnQueue(&Q,ai); 11 / 38 GetHead(Q,&e); printf(nhui che yun xing chu dui cao zuo:n); getchar(); for(i=0;i EnQueue(&Q,ai); DeQueue(&Q,&e); printf(%d,e); 实验步骤 1、 WIN-TC开发环境安装与配置 1) 首先在网上下载 WIN-TC的版本; 2) 下载完成后进行安装,安装路径默认就可以了,一路 next12 / 38 就 ok了; 3) 打开 WIN-TC会出现如下界面; 2、在 WIN-TC中输程序,源代码见算法流程。 3、在运行中点编译连接。 4、运行后显示编译成功即没有错误,如图: 5、点确定后再在运行中点编译连接并运行,并出现如下窗口: 实验总结报告 栈和队列 学号: 姓名: 时间: 一、目的 1.做实验的目的 加深对线性结构栈和队列的理解,学会定义栈和队列的存储13 / 38 结构,加强对栈和队列操作机制的理解,掌握栈和队列的基本操作,了解栈和队列的一些应用。 2.撰写实验报告的目的 对本次实验情况进行总结,加强对实验内容的理解,对实验过程有一个系统的认 识,从中获得本次试验的经验,并对实验结果进行适当的分析,加深对栈和队列的理解和认识。 二、内容 1.说明实验次数及实验内容 本次实验用一次实验课时完成 实验内容: 、编写函数 CreatStack_sq(), DestoryStack_sq(), Push_sq(), Pop_sq(),StackEmpty_sq() 和 StackTraverse_sq(),分别完成创建空栈 ,销毁栈 ,入栈 ,出栈 ,判断栈是否为空 ,遍历栈底到栈顶依 14 / 38 次打印栈内元素等功能 (不要修改原栈 ),完成后进行测试。 测试要求 :在 main 中 ,建立栈;判断栈是否为空;将 09 入栈;将栈 顶两个元素出栈 , 两元素求和后再入栈;从栈底到栈顶依次打印元素 ,再从栈顶到栈底打印元素;销毁栈。 void CreatStack_sq(SqStack &S, int msize = STACK_INIT_SIZE) . void DestoryStack_sq(SqStack &S) 15 / 38 . void Push_sq(SqStack &S, ElementType e) . bool Pop_sq(SqStack &S, ElementType &e) . bool StackEmpty_sq(SqStack S) 16 / 38 . bool StackTraverse_sq(SqStack S) . 、编写函数 , CreateQueue_L() , DestoryQueue_L() , EnQueue_L() ,DeQueue_L(),分别完 成创建队列 ,销毁队列 ,入队列 ,出队列等操作 ,完成后进行测试。 测试要求 :在主程序中 ,建立队列 ,将 09 依次入队列 ,按入队列顺序出队列并打印 , 销毁队列。 void CreateQueue_L(LinkQueue &Q) 17 / 38 void DestoryQueue_L(LinkQueue &Q) void EnQueue_L(LinkQueue &Q,int e) bool DeQueue_L(LinkQueue &Q, int &e) 18 / 38 、回文是指正读反读均相同的字符序列 ,如 ”abba ” 和 ”abdba” 均是回文 , 但 ”good” 不是回文。根据第四章栈和队列所学内容 ,试写一个算法判 定给定的字符向量是否为回文。 测试数据 : char* ch = “abccba”; char* ch = “abccbd”; 、 (附加题 )编写函数 void Knapsack(int w,int T,int n),完成背包求解问题。 测试数据 : w6 = 2,8,6,5,1,4; 19 / 38 2.做实验完成情况 实验内容在实验课时时间内完成,选做内容也完成。 本次实验内容较多,为使代码看着简洁有条理,采用了建工程的方式。 栈部分: 自定义了头文件 L_: /*自定义头文件 */ #include #define STACK_INIT_SIZE 100; #define STACKINCREMENT 100; /*自定义头文件 */ #include 20 / 38 typedef char ElemType; /typedef int ElemType; /*栈的结构体定义 */ typedef struct ElemType *elem; int top; int stacksize; SqStack; void CreateStack_sq(SqStack &S,int msize);/创建栈,msize 为栈的大小 void DestroyStack_sq(SqStack &S);/销毁栈 void Push(SqStack &S, ElemType e); / 进栈操作, e为入栈元素 int Pop_sq(SqStack &S, ElemType &e);/出站操作,成功返回 0,不成功返回 -1 void Increment(SqStack &S, int inc_size);/增加栈空21 / 38 间 数据结构实验报告 姓名: 方钢 学号: 20165567 专业: 电子商务 班 级: 10 1班 指导教师: 实验时间: 实验地点: 新区实验楼四楼 循环队列 1. 实验内容和要求 实验要求 本次实验中,队列使用顺序结构循环队列; 结构定义和运算实验放入库文件 “” 中; 各运算和变量命名直观易懂,并有相应的注释。 22 / 38 实验内容 初始化一个队列。 判断是否队空。 判断是否队满。 入队 出队 取队头元素 求当前队列中元素个数 编写算法实现 初始化空循环队列; 当键盘输入奇数时,此奇数入队; 23 / 38 当键盘输入偶数时,队头出队; 当键盘输入 0时,算法退出; 每当键盘输入后,输出当前队列中的所有元素 2. 实验目的 掌握队列的基本概念。 掌握循环队列的建立、入队和出队等方法。 根据具体问题的需要,设计出合理的表示数据的结构,并设计相 关算法。 3. 算法设计 初始化一个队列。 判断是否队空。 24 / 38 判断是否队满。 入队 出队 取队头 元素 求当前队列中元素个数 算法: int main(int argc, char* argv) seqQueue L; elementType x; int k,m,n; 25 / 38 initQueue(&L);/ 初始化顺序循环队列 if(queueEmpty(L)/ 判断空队列 cout else cout cout cinx; if(x while(x!=0) enQueue(&L, x);/循环入队 for(m=x-1;m=0;m-) break; 26 / 38 x=m; cout int i=+1; while(i cout i+; cout cout n=(+MaxLen)%MaxLen; cout cout queueFront(L, x); / 取队头元素 cout outQueue(&L); / 出队 cout i=+1; 27 / 38 while(i cout i+; cout else cout return 0; 截图: 编写算法实现 初始化空循环队列; 当键盘输入奇数时,此奇数入队; 28 / 38 当键盘输入偶数时,队头出队; 当键盘输入 0时,算法退出; 每当键盘输入后,输出当前队列中的所有元素 算法: int main(int argc, char* argv) seqQueue L; elementType x; initQueue(&L);/ 初始化顺序循环队列 if(queueEmpty(L)/ 判断空队列 cout else 29 / 38 cout cout cinx; while(x!=0) if(x%2!=0) enQueue(&L, x); else outQueue(&L); cout int i=+1; while(i 30 / 38 cout i+; cout cinx; while(x=0) cout break; return 0; 截图: 31 / 38 4. 总结和心得 通过对循环队列的上机实验明白了循环队列的一些功能,对循环队列有了更深刻的了解。 班级 电信 091 学号 201606020167 姓名 张成 实验组别 实验日期 2016/3/29 室温 15 报告日期 2016/3/28 成绩 报告内容: (目的和要求,原理,步骤,数据,计算,小结等 ) 实验名称:队列设计与应用 一、实验目的: 1、掌握队列的原理; 2、熟悉队列的设计与应用。 二、实验内容: ? 设计自己的顺序队列,实现队列的基本功能:入队、出队; 对上述功能进行测试。 32 / 38 三、实验方法: 顺序队列的描述: #define QUEUESIZE 100 typedef int DataType; typedef struct DataType itemsQUEUESIZE; int front,rear; SqQueue; 顺序队列的基本操作: 出队: int DeQueue(SqQueue *Q,DataType *e) if(Q-front = Q-rear) printf(队列已空 n); return 0; *e=Q-itemsQ-front;/ Q-front=(Q-front+1)%QUEUESIZE; return 1; 入队 int EnQueue(SqQueue *Q,DataType e) if(Q-rear+1)%QUEUESIZE = Q-front) printf(33 / 38 队列已满 n); return 0; Q-itemsQ-rear=e;/ Q-rear=(Q-rear+1)%QUEUESIZE; return 1; 四、实验源码 /=Header Files : /= 定义= #define QUEUESIZE 100 typedef int DataType; typedef struct DataType itemsQUEUESIZE; int front,rear; SqQueue; int EnQueue(SqQueue *Q,DataType e); int DeQueue(SqQueue *Q,DataType *e); int TraverseQueue(SqQueue Q) ; int QueueEmpty(SqQueue Q); int InitQueue(SqQueue *Q); 34 / 38 /=Source Files 与 /= = /文件名称 : /功能说明 :实现出入队列 /资源说明 : /创建日期 : 2016-04-05 /软件版本 : v /= #include #include #include /= /函数名 : main() /输入参数 : /输出参数 : /设计者: /创建日期: /= void main() 35 / 38 /int nu,stp; /scanf(%d,&nu); /scanf(%d,&stp); int e; int tim62; SqQueue q; InitQueue(&q); EnQueue(&q,10); TraverseQueue(q); DeQueue(&q,&e); TraverseQueue(q); DeQueue(&q,&e); TraverseQueue(q); /= = /文件名称 : /功能说明 :入队列,出队列,初始化等的具体实现 /资源说明 : /创建日期 : 2016-04-5 /软件版本 : v /=36 / 38 = int DeQueue(SqQueue *Q,DataType *e) if(Q-front =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽宁省葫芦岛市协作体2026届高二化学第一学期期中综合测试模拟试题含解析
- 现代电视原理课件
- 2025年Python虚拟现实考试专项训练试卷 案例解析版
- 2025年电气工程师考试专项训练试卷 电气设计重点难点攻克
- 2025年高中英语中考冲刺押题试卷 口语表达专项训练
- 重庆市万州二中2026届化学高一上期末统考模拟试题含解析
- 玩滑梯的启示课件
- 浙江省温州市苍南县树人中学2026届化学高三第一学期期中质量检测试题含解析
- 民法典宣讲课件
- 王献之练字课件
- 养老机构风险防范课件
- 腰椎融合术后护理课件
- 炸药安全课件
- 新入职员工遵纪守法培训
- 中学新生入学培训
- 肿瘤科中医护理适应技术
- 专题:完形填空(含解析)六年级英语下册期末复习考点培优专项鲁教版(五四学制)(含答案解析)
- 口腔科护士核心职责与操作规范
- 死亡病例讨论病例汇报
- 人教版(2024)八年级(下)期末物理试卷(含解析)
- 期末真题演练卷(试题) 数学七年级下册北师大版(2024版)
评论
0/150
提交评论