2023年河南工业大学实验报告实验一线性结构栈和队列的操作_第1页
2023年河南工业大学实验报告实验一线性结构栈和队列的操作_第2页
2023年河南工业大学实验报告实验一线性结构栈和队列的操作_第3页
2023年河南工业大学实验报告实验一线性结构栈和队列的操作_第4页
2023年河南工业大学实验报告实验一线性结构栈和队列的操作_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

XXXX大学实验报告课程名称数据结构实验项目实验一线性结构(二)一一栈和队列的操隹院系信息学院计类系专业班级计类1501姓名学号指导老师日期批改日期成绩一实验目的.纯熟掌握栈的存储结构及相关典型操作。.纯熟掌握队列的存储结构及相关典型操作。二实验内容及规定实验内容:.建立链式栈,实现栈的初始化、进栈、出栈等典型操作。.建立循环队列,实现队列的初始化、进队、出队等典型操作。实验规定:.键盘输入数据;.屏幕输出运营结果。.规定记录实验源代码及运营结果。.运营环境:VC++6.0三实验过程及运营结果1、循环队列#inc1ude<stdio.h>®return0;QUC:\Windows\system32\cmd.exe输入1为入队*输入2为出队中输入3为队列长度*输入4为遍历*输入0为退出中*****************1请输入入队元素:991请输入入队元素:884遍历结果为:9988输出的出队元素为:99认出的出队元素为:881用输入入队元素:66队列长度为10请按任意键继续.,,33C:\Windows\system32\cmd.exe输入1为栈的初始化*输入2为入栈*输入3为出栈*输入。为退出十1栈的初始化,请输入数据,以T结束:7788-1请输入进栈元素:8出栈元素为80请按任意键继续...四调试情况、设计技巧及体会为了避免顺序栈的存储结构所带来的在操作中需要移动大量数据的缺陷,采用链栈,具有动态特性,不用设立头结点。队列是一种先进后出带的线性表,一个链队列由头指针和尾指针唯一拟定,所以建立链表的时候,需要在对头加一个头结点,头指针指向头结点。include<std1ib.h>^defineOK1defineERROR0defineOVERFLOW-2^defineMAXQSIZE100〃最大队列长度typedefstruct(int*base;〃初始化的动态分派存储空间intfront;intrear;}SqQueue;//初始化队列intInitQueue(SqQueueQ)(oQ.base=(int*)malloc(MAXQSIZE*sizeof(int));oif(!Q.base)exit(OVERFLOW);//存储分派失败Q.front=Q.rear=0;oreturnOK;〃入队操作intEnQueue(SqQueueQ)(ointe;if((Q.rear+1)%MAXQSIZE==Q.front)〃判断队满(。printf(〃队列已满,不能入队\n〃);returnERROR;}printf(〃请输入入队元素:”);scanf(〃%d”,&c);Q.base[Q.rear]=e;〃入队Q.rear=(Q.rear+1)%MAXQSIZE;//队尾指针后移oreturnOK;}〃出队操作intDeQueue(SqQueueQ)»if(Q.front==Q.rear)//判断队空oprintf(〃队列已为空\n〃);。returnERROR;。}®e=Q.base[Q.front];〃队头出队◎printf(〃输出的出队元素为:〃);printf("%d\rT,e);Q.fronts(Q.front+l)%MAXQSIZE;〃队头下表后移^returnOK;)〃队列长度intQueueLength(SqQueueQ)(oreturn((Q.rear-Q.front+MAXQSIZE)%MAXQSIZE);)//队列遍历intQueueTraverse(SqQueueQ)oprintf("遍历结果为:”);◎while(Q.front!=Q.rear)printf("%d,z,Q.base[Q.front]);。Q.front=(Q.front+l)%MAXQSIZE;}printf(〃\n〃);oreturnOK;}intmain()(ntn;SqQueueQ;InitQueue(Q);°printf("*输入1为入队*\n〃);Printf("*输入2为出队*\n〃);Pr输入3为队列长度*\n”);printf("*输入4为遍历*\n〃);printf("*输入0为退出*\n");printf(〃************火****\n〃);»while(scanf(z,%dn,&n),n)oswitch(n)(case1:EnQueue(Q);break;ocase2:DeQueue(Q);break;©case3:printf("队列长度为%d\n〃,QueueLength(Q));break;◎case4:QueueTraverse(Q);break;。))return0;)2、链式栈#include<stdio.h>#include<stdlib.h>defineOK1defineERR0R0defineOVERFLOW-2typedefintStatus;typedefintSElemType;typedefstructnodeSElemTypedata;structnode*next;}SLnode,*SLinkList;typedefstruct(SLinkListtop,base;nt1en;}S_LinkList;//栈的初始化StatusCreat_S(S_LinkList&S)(?intn;SLinkListp,q;叩rintf(〃栈的初始化,请输入数据,以T结束:\n〃);S.top=(SLinkList)maHoc(sizeof(SLnode));.base=(SLinkList)malloc(sizeof(SLnode));top->next=S.base;q=S.base;en=0;whi1e(scanf("%d〃,&n),n!=-1)(p=(SLinkList)malloc(sizeof(SLnode));p—>data=n;top—>next=p;p->next=q;q=p;S.len++;q=S.top->next;while(q!=S.base)(printf(〃%d\n〃,q->data);q=q->next;)叩rintf("*****\n");returnOK;)〃进栈StatusPushS(SLinkList&S)(inte;printf("请输入进栈元素:〃);scanf("%d〃,&e);SLinkListp,q;q=S.top—>next;p=(SLinkList)mal1oc(sizeof(SLnode));p->data=e;S.top->next=p;p->next=q;q=p;S.len++;returnOK;//出栈StatusPopS(S_LinkList&S)(SLinkListp;p=S.top—>next;if(p!=S.base)printf(〃出栈元素为%d\n〃,p->data);returnOK;}intmain()(S_LinkLists;inta;printf(〃*输入1为栈的初始化*\n〃);printf("*输入2为入栈*\n〃);Printf("*输入3为出栈*'n〃);printf(〃*输入0为退出*\n〃);pri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论