*第六周*数据结构实践项目一【建立顺序栈算法库】
通过对于顺序栈的学习,我开始建立自己的顺序栈算法库~程序采用了多文件系统的构建方式,将整个算法库分为两个部分,头文件部分和自定义函数及主函数部分。
首先看一下头文件部分:
/*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;
}
运行结果:
至此顺序栈算法库建立完成,如有错有,敬请指正。
*第六周*数据结构实践项目一【建立顺序栈算法库】相关推荐
- 数据结构上机实践第五周项目2 - 建立链栈算法库
建立链栈算法库 链式存储和顺序存储方式各有特点,各有缺点,上次实践建立了顺序栈的算法库,本次实践将建立链栈的算法库,用以应多更多多样化的问题.(编译环境:VC++6.0) 本次建立算法库需要建立多文件 ...
- 第五周项目-建立顺序栈算法库
建设自己的专业基础设施算法库. 顺序栈算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:sqstack.h,包含定义顺序栈数据结构的代码.宏定义.要实现算法的函数的声明: [csharp] ...
- 第五周 项目二 建立链栈算法库
/* Copyright (c)2017,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:第5周项目2--建立链栈算法库.cpp 作 者:孙仁圆 完成日期:2017年 ...
- 第六周项目2建立链栈算法库
/* Copyright (c)2015,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:第六周项目2.cpp 作 者:彭子竹 完成日期:2015年10月23日 版 ...
- 【项目2 - 建立链栈算法库】
代码: <pre name="code" class="cpp">//main函数 #include <iostream>#includ ...
- 第十六周上机实践—项目2—大数据集上排序算法性能的体验
/* *Copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作者:林莉 *完成日期:2015年12月18日 *版本:v1 ...
- 数据结构上机实践第五周项目1- 建立顺序栈算法库
建立顺序栈算法库 本次实践将建立顺序栈的算法库,用以解决更多的工程问题,提供便利.(编译环境:VC++6.0) 建立算法库将会用到多文件组织工程的建立,本次实践不再细说,点击此处可参考. 建立好的工程 ...
- [数据结构实践项目]变态的停车场管理系统
[数据结构实践项目]变态的停车场管理系统 项目简介 设停车场是一个可以停放 n 辆汽车的南北方向的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在 ...
- 第6周项目2--建立链栈算法库
** 问题及代码: ** /* Copyright (c)2015,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:第6周项目2--建立链栈算法库.cpp 作 者:孙 ...
- 数据结构实践项目——图的基本运算及遍历操作
本文是针对[数据结构基础系列(7):图]中第1-9课时的实践项目. 0701 图结构导学 0702 图的定义 0703 图的基本术语 0704 图的邻接矩阵存储结构及算法 0705 图的邻接表存储结构 ...
最新文章
- 【组队学习】【35期】李宏毅机器学习(含深度学习)
- getAttribute与getParameter区别
- 位运算模块mBit.bas
- python下载图片并保存_Python爬虫获取图片并下载保存至本地的实例
- 第一个hibernate程序
- git 分支合并_批量删除GIT已合并到master的分支
- Linux系统语言教程,Linux操作系统基础及语言基础教程-麦可网张凌华
- 前端学习(516):两列布局的第三种解决方案
- 配置msf连接postgresql数据库
- 知道ThreadLocal吗?一起聊聊到底有啥用
- 4.kibana部署
- 移动支付到底有多美?
- 软件开发过程中最重要的是人?还是领导者?
- 柯特斯公式 | 数值积分
- Mac下安装激活matlab2017b教程方法
- python xlwt_使用Python和xlwt向Excel文件中写入中文
- elementUI使用el-tabs时,页面崩溃卡死问题
- 批量制作学校图书馆条码标签
- 年薪50万开发者相亲失败:程序员,别输在不会说话上
- layui-layer.open打开新页面进行数据处理,处理完成后数据表格重载问题