通过对于顺序栈的学习,我开始建立自己的顺序栈算法库~程序采用了多文件系统的构建方式,将整个算法库分为两个部分,头文件部分和自定义函数及主函数部分。

首先看一下头文件部分:

/*Copyright (c) 2015,烟台大学计算机与控制工程学院All righs reserved文件名称:sqtack.h作者: 李哲完成日期:2015年10月8日问题描述:建设顺序栈算法库程序说明:头文件代码*/
#ifndef SQSTACK_H_INCLUDED
#define SQSTACK_H_INCLUDED#include <stdio.h>
#include <malloc.h>
#define MaxSize 100
typedef char ElemType;
typedef struct
{ElemType data[MaxSize];int top;
} SqStack;void InitStack(SqStack *&s);    //初始化栈
void DestroyStack(SqStack *&s);  //销毁栈
bool StackEmpty(SqStack *s);     //栈是否为空
int StackLength(SqStack *s);  //返回栈中元素个数——栈长度
bool Push(SqStack *&s,ElemType e); //入栈
bool Pop(SqStack *&s,ElemType &e); //出栈
bool GetTop(SqStack *s,ElemType &e); //取栈顶数据元素
void DispStack(SqStack *s);  //输出栈#endif // SQSTACK_H_INCLUDED

下面是自定义函数及主函数部分:

/*Copyright (c) 2015,烟台大学计算机与控制工程学院All righs reserved文件名称:sqstack.c作者: 李哲完成日期:2015年10月8日问题描述:建设顺序栈算法库程序说明:自定义函数及主函数*/
#include "sqstack.h"void InitStack(SqStack *&s)    //初始化栈
{s=(SqStack *)malloc(sizeof(SqStack ));s->top=-1;
}void DestroyStack(SqStack *&s)  //销毁栈
{free(s);
}bool StackEmpty(SqStack *s)     //栈是否为空
{if(s->top==-1){return true;}else return false;
}int StackLength(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==MaxSize-1){return false;}e=s->data[s->top];return true;
}
void DispStack(SqStack *s)  //输出栈
{int i;for(i=s->top;i>=0;i--){printf("%c",s->data[i]);}printf("\n");
}int main()
{ElemType e;SqStack *s;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)栈长度:%d\n",StackLength(s));printf("(6)从栈顶到栈底元素:");DispStack(s);printf("(7)出栈序列:");while (!StackEmpty(s)){Pop(s,e);printf("%c ",e);}printf("\n");printf("(8)栈为%s\n",(StackEmpty(s)?"空":"非空"));printf("(9)释放栈\n");DestroyStack(s);return 0;
}

运行结果:

至此顺序栈算法库建立完成,如有错有,敬请指正。

*第六周*数据结构实践项目一【建立顺序栈算法库】相关推荐

  1. 数据结构上机实践第五周项目2 - 建立链栈算法库

    建立链栈算法库 链式存储和顺序存储方式各有特点,各有缺点,上次实践建立了顺序栈的算法库,本次实践将建立链栈的算法库,用以应多更多多样化的问题.(编译环境:VC++6.0) 本次建立算法库需要建立多文件 ...

  2. 第五周项目-建立顺序栈算法库

    建设自己的专业基础设施算法库. 顺序栈算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:sqstack.h,包含定义顺序栈数据结构的代码.宏定义.要实现算法的函数的声明: [csharp]  ...

  3. 第五周 项目二 建立链栈算法库

    /* Copyright (c)2017,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:第5周项目2--建立链栈算法库.cpp 作 者:孙仁圆 完成日期:2017年 ...

  4. 第六周项目2建立链栈算法库

    /* Copyright (c)2015,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:第六周项目2.cpp 作 者:彭子竹 完成日期:2015年10月23日 版 ...

  5. 【项目2 - 建立链栈算法库】

    代码: <pre name="code" class="cpp">//main函数 #include <iostream>#includ ...

  6. 第十六周上机实践—项目2—大数据集上排序算法性能的体验

    /* *Copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作者:林莉 *完成日期:2015年12月18日 *版本:v1 ...

  7. 数据结构上机实践第五周项目1- 建立顺序栈算法库

    建立顺序栈算法库 本次实践将建立顺序栈的算法库,用以解决更多的工程问题,提供便利.(编译环境:VC++6.0) 建立算法库将会用到多文件组织工程的建立,本次实践不再细说,点击此处可参考. 建立好的工程 ...

  8. [数据结构实践项目]变态的停车场管理系统

    [数据结构实践项目]变态的停车场管理系统 项目简介 设停车场是一个可以停放 n 辆汽车的南北方向的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在 ...

  9. 第6周项目2--建立链栈算法库

    ** 问题及代码: ** /* Copyright (c)2015,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:第6周项目2--建立链栈算法库.cpp 作 者:孙 ...

  10. 数据结构实践项目——图的基本运算及遍历操作

    本文是针对[数据结构基础系列(7):图]中第1-9课时的实践项目. 0701 图结构导学 0702 图的定义 0703 图的基本术语 0704 图的邻接矩阵存储结构及算法 0705 图的邻接表存储结构 ...

最新文章

  1. 【组队学习】【35期】李宏毅机器学习(含深度学习)
  2. getAttribute与getParameter区别
  3. 位运算模块mBit.bas
  4. python下载图片并保存_Python爬虫获取图片并下载保存至本地的实例
  5. 第一个hibernate程序
  6. git 分支合并_批量删除GIT已合并到master的分支
  7. Linux系统语言教程,Linux操作系统基础及语言基础教程-麦可网张凌华
  8. 前端学习(516):两列布局的第三种解决方案
  9. 配置msf连接postgresql数据库
  10. 知道ThreadLocal吗?一起聊聊到底有啥用
  11. 4.kibana部署
  12. 移动支付到底有多美?
  13. 软件开发过程中最重要的是人?还是领导者?
  14. 柯特斯公式 | 数值积分
  15. Mac下安装激活matlab2017b教程方法
  16. python xlwt_使用Python和xlwt向Excel文件中写入中文
  17. elementUI使用el-tabs时,页面崩溃卡死问题
  18. 批量制作学校图书馆条码标签
  19. 年薪50万开发者相亲失败:程序员,别输在不会说话上
  20. layui-layer.open打开新页面进行数据处理,处理完成后数据表格重载问题

热门文章

  1. 尝试搭建Apache+Tomcat负载均衡
  2. 网络不通时自动重启网卡的脚本
  3. Mac上功能强大图片查看编辑工具:zGallery
  4. 临时修改 macOS 应用的界面语言
  5. Android TV 开发(5)
  6. 如何打开kernel最开始的打印
  7. gerp命令基础介绍
  8. HBase原理-数据读取流程解析
  9. Linux下java进程CPU占用率高分析方法
  10. 二叉树 知道度 求节点数