实验结构-实验二-栈的基本操作.docx_第1页
实验结构-实验二-栈的基本操作.docx_第2页
实验结构-实验二-栈的基本操作.docx_第3页
实验结构-实验二-栈的基本操作.docx_第4页
实验结构-实验二-栈的基本操作.docx_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

数据结构实验报告实验二:栈的基本操作姓 名: 周 成 学 号: 13083511 专 业: 软件工程 任 课 教 师: 马慧珠 2013年12 月05 日1.实验名称:栈的基本操作2.实验目的: 掌握栈的结构特点并熟悉栈的基本操作。3.实验要求:编程实现顺序栈的各种基本运算,并在此基础上设计一个主程序完成如下功能(两个选一个):1.采用链式存储实现栈的初始化、判空、入栈、出栈操作。2.采用顺序存储实现栈的初始化、判空、入栈、出栈、求栈的长度操作。4.实验内容:整个算法就是先建立栈结点结构体,然后进行栈的基本操作,栈的判空,入栈,出栈,取栈顶元素,求栈的长度,销毁栈以及栈的初始化。栈的顺序存储结构简称为顺序栈,它是运算受限的顺序表。对于顺序栈,入栈时,首先判断栈是否为满,栈满的条件为:p-top= =MAXNUM-1,栈满时,不能入栈;否则出现空间溢出,引起错误,这种现象称为上溢。出栈和读栈顶元素操作,先判栈是否为空,为空时不能操作,否则产生错误。通常栈空作为一种控制转移的条件。注意:(1)顺序栈中元素用向量存放(2)栈底位置是固定不变的,可设置在向量两端的任意一个端点(3)栈顶位置是随着进栈和退栈操作而变化的,用一个整型量top(通常称top为栈顶指针)来指示当前栈顶位置5.实验程序代码及运行结果:源程序:#include stdafx.h#include#include#define MAXNUM 20#define ElemType int/*定义?顺3序栈?的?存?储结构1*/typedef struct ElemType stackMAXNUM; int top;SqStack;/*初?始?化顺3序栈?*/void InitStack(SqStack *p) if(!p) printf(Eorror); p-top=-1;/*入?栈?*/void Push(SqStack *p,ElemType x) if(p-toptop=p-top+1; p-stackp-top=x; else printf(Overflow!n);/*出?栈?*/ElemType Pop(SqStack *p) ElemType x; if(p-top!=0) x=p-stackp-top; printf(以?前的?栈?顶数y据Y元a素?%d已?经-被?删?除y!?n,p-stackp-top); p-top=p-top-1; return(x); else printf(Underflow!n); return(0); /*获?取?栈?顶元a素?*/ElemType GetTop(SqStack *p) ElemType x; if(p-top!=0) x=p-stackp-top; return(x); else printf(Underflow!n); return(0); /*遍历顺3序栈?*/void OutStack(SqStack *p) int i; printf(n); if(p-toptop;i=0;i-) printf(第%d个?数y据Y元a素?是?:o%6dn,i,p-stacki);/*置?空?顺3序栈?*/void setEmpty(SqStack *p)p-top= -1;/*主函数y*/int main() SqStack *q; int y,cord;ElemType a; do printf(n); printf(第一?次?使1用?必?须?初?始?化!?n); printf(n); printf(n 主菜?单 n); printf(n 1 初?始?化顺3序栈? n); printf(n 2 插?入?一?个?元a素? n); printf(n 3 删?除y栈?顶元a素? n); printf(n 4 取?栈?顶元a素? n); printf(n 5 置?空?顺3序栈? n); printf(n 6 结束?程序运?行D n); printf(n-n); printf(请?输?入?您的?选?择?( 1, 2, 3, 4, 5,6); scanf(%d,&cord); printf(n); switch(cord) case 1: q=(SqStack*)malloc(sizeof(SqStack); InitStack(q); OutStack(q); break; case 2: printf(请?输?入?要a插?入?的?数y据Y元a素?:oa=); scanf(%d,&a); Push(q,a); OutStack(q); break; case 3: Pop(q); OutStack(q); break; case 4: y=GetTop(q); printf(n栈?顶元a素?为a:o%dn,y); OutStack(q); break; case 5: setEmpty(q); printf(n顺3序栈?被?置?空?!?n); OutStack(q); break; case 6: exit(0); while (cord=6);实验程序运行结果:程序初始化:删除栈顶元素:6.实验总结:本来我对编程很没有信心,做这样一个课程设计感觉有点吃力,虽然有些人觉得很简单,但是我还是坚持做下来

温馨提示

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

评论

0/150

提交评论