编写一个程序实现顺序栈的各种基本运算(假设顺序表的元数基本类型为Char)
2016-07-01 16:50
609 查看
/* *Copyright (c) 2016, 烟台大学计算机学院 *All rights reserved. *文件名称:main.cpp *作者:张旺华 *完成日期: 2016 年 7 月 1 日 *版本号:v1.0 *问题描述:编写一个程序实现顺序栈的各种基本运算(假设顺序表的元数基本类型为Char) * */ #include <stdio.h> #include <malloc.h> #define MaxSize 100 typedef char ElemType; using namespace std; typedef struct { ElemType data[MaxSize]; int top; //栈顶指针 } SqStack; void InitStack(SqStack *&s) //初始化栈 s { s=(SqStack *)malloc(sizeof(SqStack)); s->top=-1; } bool DestroyStack(SqStack *s) //销毁栈 s { free(s); } bool StackEmpty(SqStack *s) //判断栈是否为空 { return (s->top==-1); } bool Push(SqStack *&s,ElemType e) //进栈 { if(s->top==MaxSize-1) //栈满的情况,即栈上溢出 return false; s->top++; s->data[s->top]=e; return true; } bool Pop(SqStack *&s,ElemType &e) //出栈 { if(s->top==-1) //栈为空的,即栈下溢出 return false; e=s->data[s->top]; s->top--; return true; } bool GetTop(SqStack *s,ElemType &e) { if(s->top==-1) return false; e=s->data[s->top]; s->top--; return true; } int main() { ElemType e; SqStack *s; printf("栈s的基本运算如下:\n"); printf(" (1)初始化栈s\n"); InitStack(s); printf(" (2)栈为%s\n",(StackEmpty(s)?"空":"非空")); printf(" (3)依次进栈元素a,b,c,d,e\n"); Push(s,'a'); Push(s,'b'); Push(s,'c'); Push(s,'d'); Push(s,'e'); printf(" (4)栈为%s\n",(StackEmpty(s)?"空":"非空")); printf(" (5)出栈序列:"); while (!StackEmpty(s)) { Pop(s,e); printf("%c ",e); } printf("\n"); printf(" (6)栈为%s\n",(StackEmpty(s)?"空":"非空")); printf(" (7)释放栈\n"); DestroyStack(s); return 0; }
运行结果:
相关文章推荐
- Java基础——数据类型之间的转换
- java 知识结构
- waits events statisc
- error LNK2005: "private: __thiscall type_info::type_info(class&n
- Xen环境下搭建NFS实现Domain0与DomainU之间共享文件
- 详解 MySQL 中的 explain
- 如何避免OOM总结
- C程序在内存中的布局
- vs插件Document Map
- juddi
- iOS 6 开发进阶与实践----第14章 保持界面响应
- python学习中的一些“坑”
- Swift3.0P1 语法指南——基础
- torch7学习(一)——Tensor
- dp sp px 转换
- 手机通话的状态
- 线性表
- ffmpeg 代码实现视频添加水印功能
- 1008. Elevator (20)
- 第六章 系统数据文件和信息