栈的基本操作

上传人:飞*** 文档编号:37149148 上传时间:2018-04-07 格式:DOC 页数:18 大小:166.50KB
返回 下载 相关 举报
栈的基本操作_第1页
第1页 / 共18页
栈的基本操作_第2页
第2页 / 共18页
栈的基本操作_第3页
第3页 / 共18页
栈的基本操作_第4页
第4页 / 共18页
栈的基本操作_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《栈的基本操作》由会员分享,可在线阅读,更多相关《栈的基本操作(18页珍藏版)》请在金锄头文库上搜索。

1、 物光学院计算机类实验报告数据结构课程实验报告学院: 应用科技学院 班级:09 电子信息工程 姓名: 苏伟华 学号:120352009006 实验设备:计算机 1 台,Microsoft Visual C 6.0 软件 实验日期:2011 年 4 月 20 日实验项目名称实验项目名称栈的基本操作实验目的实验目的1)熟悉栈的定义和栈的基本操作。2)掌握顺序存储栈和链接存储栈的基本运算。3)加深对栈结构的理解逐步培养解决实际问题的能力。实验要求实验要求: 1.编写栈的基本操作函数(分别用顺序和链接两种方式实现) 。-顺序栈的基本操作函数进栈函数 int Push(SqStack 出栈函数 int

2、Pop(SqStack 输出栈元素 void OutputStack(SqStack 取栈顶元素 int GetTop(SqStack S,int -调用上述函数实现下列操作,操作步骤如下。调用进栈函数建立一个栈。读取栈顶元素。从栈中删除元素。输出栈中的所有元素。-链栈的基本操作函数进栈函数 LinkStack PushStack(LinkStack top,int x);/进栈函数 出栈函数 LinkStack PopStack(LinkStack top); 输出栈元素 void Print();取栈顶元素 int GetStackTop(LinkStack top); 物光学院计算机类实

3、验报告-调用上述函数实现下列操作,操作步骤如下。调用进栈函数建立一个栈。读取栈顶元素。从栈中删除元素。输出栈中的所有元素。实验内容实验内容( (包括步骤包括步骤) ):1.顺序栈的存储结构typedef structint *base;int *top;int stacksize;SqStack;程序中的主要函数及功能的说明int InitStack(SqStack int GetTop(SqStack S,int int Push(SqStack int Pop(SqStack void OutputStack(SqStack 主程序模块switch(m) case 1: printf(“n

4、“);system(“CLS“);printf(“请输入要进栈的元素个数是:“);scanf(“%d“,printf(“n 请输入要进栈的%d 个元素:“,a);for(b=0;b#include#include#define error 0#define ok 1#define OVERFLOW -2#define STACK_INIT_SIZE 100;/栈内存的初始分配量,以 sizeof(ElemType)为单位#define STACKINCREMENT 10;/栈内存的分配增量,以 sizeof(ElemType)为单位typedef int ElemType;typedef st

5、ructint *base;/存储空间的基址,数据元素的数据类型约定为 ElemType 物光学院计算机类实验报告int *top;/表示栈顶,如果 top=base,表示空栈 int stacksize; /当前分配的存储容量,以 sizeof(ElemType) 为单位SqStack;/* /*函数的声明部分* /*int InitStack(SqStack /栈的初始化int GetTop(SqStack S,int /初始条件:栈 S 已存在且非空。操作结果:用 e返回 S 的栈顶元素。int Push(SqStack /初始条件:栈 S 已存在。操作结果:插入元素 e 为新的栈顶元素

6、。int Pop(SqStack /初始条件:栈 S 已存在且非空。操作结果:删除 S的栈顶元素,并用 e 返回其值。void OutputStack(SqStack /*/*函数的实现部分*/*int InitStack(SqStack S.base=(ElemType*)malloc(size*sizeof(ElemType);if(!S.base) exit(OVERFLOW);S.top=S.base; /置栈 S 为空栈S.stacksize=STACK_INIT_SIZE;return ok;int GetTop(SqStack S,int e=*(S.top-1);return

7、ok;int Push(SqStack S.base=(ElemType *) realloc(S.base,(S.stacksize+stackinvrement)*sizeof(ElemType);if(!S.base) exit(OVERFLOW);/存储分配失败S.stacksize+=STACKINCREMENT; 物光学院计算机类实验报告*S.top+=e;return ok;int Pop(SqStack e=*-S.top;return ok; void OutputStack(SqStack q=S.top-1;for(int i=0;i#includetypedef str

8、uct SNode/单链表结点结构int data;struct SNode *next;SNode,*LinkStack;/链栈类型定义LinkStack top;/指向栈顶结点/* /*函数的声明部分* /*LinkStack PushStack(LinkStack top,int x);/在栈中压入一元素 xLinkStack PopStack(LinkStack top);/在栈中删除栈顶元素bool IsEmpty();/判单链形式栈是否为空栈int GetStackTop(LinkStack top);/对非空栈求栈顶元素void Print();/输出栈元素/*/*函数的实现部分

9、*/*LinkStack PushStack(LinkStack top,int x) /在栈中压入一元素 x物光学院计算机类实验报告LinkStack s;s=(LinkStack)malloc(sizeof(SNode);/s = (struct Node *)malloc( sizeof( struct Node ) );if ( s = NULL ) printf(“Out of space!n“);else s-data=x;s-next=top;top=s; return top;LinkStack PopStack(LinkStack top) /在栈中删除栈顶元素LinkSta

10、ck p;if(top!=NULL)p=top;top=top-next;free(p);printf(“退栈已完成n“);return top;else printf(“栈是空的,无法退栈!n“); return 0;int GetStackTop(LinkStack top) /对非空栈求栈顶元素return top-data;bool IsEmpty()/bool 取值 false 和 true,是 0 和 1 的区别,bool 只有一个字节,BOOL为 int 型,bool 为布尔型物光学院计算机类实验报告return top=NULL ? true:false;void Print()/输出栈的所有元素SNode *p;p=top;if(IsEmpty()printf(“The stack is empty!n“);return;while(p)printf(“data);p=p-next;printf(“n“);/*/*

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

当前位置:首页 > 行业资料 > 其它行业文档

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