栈的建立以及使用
来源:互联网 发布:java web爬虫框架 编辑:程序博客网 时间:2024/06/15 12:29
stack.h
typedef int Status;
typedef int SElemType;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
Status InitStack(SqStack &S);
Status DestroyStack(SqStack &S);
Status ClearStack(SqStack &S);
Status StackEmpty(SqStack S);
int StackLength(SqStack S);
Status GetTop(SqStack S,SElemType &e);
Status Push(SqStack S,SElemType e);
Status Pop(SqStack &S,SElemType &e);
stack.cpp
#include "StdAfx.h"
#include "stack.h"
Status InitStack(SqStack &S)
{
S.base=(SElemType*)malloc(STACK_INIT_SIZE * sizeof(SElemType));
if(!S.base) exit(OVERFLOw);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
Status DestroyStack(SqStack &S)
{
S.top=S.base=NULL;
S.stacksize=0;
free(S.base);
return OK;
}
Status ClearStack(SqStack &S)
{
S.top=S.base;
S.stacksize=0;
return OK;
}
Status StackEmpty(SqStack S)
{
if(S.base==S.top)
return OK;
else
return ERROR;
}
int StackLength(SqStack S)
{
SElemType sum;
sum=S.stacksize;
return sum;
}
Status GetTop(SqStack S,SElemType &e)
{
if(S.top==S.base)
return ERROR;
e=*--S.top;
return OK;
}
Status Push(SqStack S,SElemType e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT) * sizeof(SElemType));
if(!S.base)
exit(OVERFLOw);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*(S.top)++=e;
return OK;
}
Status Pop(SqStack &S,SElemType &e)
{
if(S.top==S.base)
return ERROR;
e=*--S.top;
return OK;
}
主文件:
// stack.cpp : Defines the entry point for the console application.
//
#include "StdAfx.h"
#include "stack.h"
int main()
{
//printf("Hello World!\n");
SqStack S;
SElemType e,a,i,b;
a=InitStack(S);
printf("-----------------------------\n");
printf("输入数据:\n");
for(i=1;i<=5;i++)
{
scanf("%d",&b);
a=Push(S,b);
}
printf("\n");
printf("-----------------------------\n");
printf("输出结果为:\n");
for(i=1;i<=5;i++)
{ a=Pop(S,e);
printf("%d ",e);
}
printf("\n");
printf("-----------------------------\n");
return 0;
}
- 栈的建立以及使用
- svn的建立以及使用
- 单链表的建立以及使用
- 顺序表的建立以及使用
- SqlServer远程连接的建立、删除以及使用
- server建立以及svn使用
- Oracle 建立序列以及触发器的建立
- 树的建立以及遍历
- 【svn】server建立以及svn使用
- 【svn】server建立以及svn 使用
- android开发环境建立以及开发工具的使用--怎样使用eclipse来开发android源码
- android开发环境建立以及开发工具的使用--怎样使用eclipse来开发android源码
- android开发环境建立以及开发工具的使用--怎样使用eclipse来开发android源码
- linux,扩展权限的使用,以及如何使用扩展权限建立共享工作目录
- android开发环境建立以及开发工具的使用--怎样使用eclipse来开发android源码
- orcale中job的建立和使用以及job的时间间隔
- CoreData的简单使用<一、CoreData数据库表的建立以及增删改查操作>
- Cookie的建立使用
- Ubuntu16.04 开热点
- JS实现点击按钮图片左右切换、点击图片按钮出现下拉菜单
- Dubbo之——服务只订阅(开发调试)
- 程序猿
- POJ 1064 Cable master——二分 + 精度控制
- 栈的建立以及使用
- ftp上传文件 访问报404
- 0519 G2n#W2B-C Find The Bone
- 质因数分解法求最大公约数
- 循环链表
- 为什么重载输出流符号的时候一定要返回引用
- Centos 7编译Android工程出现 error while loading shared libraries: libz.so.1 的问题
- eclipse生成带注释的set、get方法
- 欢迎使用CSDN-markdown编辑器