数据结构中栈的相关操作
来源:互联网 发布:网络债券投资 编辑:程序博客网 时间:2024/05/16 09:09
#include<stdio.h>
#include<stdlib.h>
#define MAXNUM 15
#define INIT_SIZE 50
#define INCREMENT 20
#define OK 2
#define ERROR 0
#define OVERFLOW -1
#define TRUE 1
#define FALSE 0
typedef int ElemType;
typedef int Status;
typedef struct { //定义顺序栈的存储结构
ElemType *base;
ElemType *top;
int stacksize;
}SqStack; //顺序栈
Status InitStack(SqStack&S){ //构造一个空栈S
S.base=(ElemType *)malloc(INIT_SIZE*sizeof(ElemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base;
S.stacksize=INIT_SIZE;
return OK;
}
Status Push(SqStack&S,ElemType e){ //插入e为新的栈顶元素
if(S.top-S.base>=S.stacksize){
S.base=(ElemType*)realloc(S.base,(S.stacksize+INCREMENT)*sizeof(ElemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=INCREMENT;
}
*S.top++ = e;
return OK;
}
Status Pop(SqStack&S,ElemType &e){ //若栈不空,则删除S的栈顶元素
if(S.top==S.base)return ERROR;
e=*--S.top;
return OK;
}
Status GetTop(SqStackS,ElemType e){ //获取栈顶元素
if(S.top==S.base)return ERROR;
e=*(S.top-1);
return OK;
}
void printstack(SqStackS){ //遍历输出栈内元素
ElemType e;
do{
e=*S.top-1;
printf("%c ",e);
S.top--;
}while(S.base==S.top);
}
StatusEmptystack(SqStack S){ //判断栈是否为空,为空返回1,否则返回0
if(S.top==S.base)
return 1;
else
return 0;
}
StatusClearstack(SqStack &S){ //清空栈内元素
S.top=S.base;
return OK;
}
StatusDestroystack(SqStack &S){ //销毁栈
free(S.base);
return OK;
}
void conversion(StatusN){ //十进制转换为八进制
SqStack S;
Status e;
InitStack(S);
while(N){
Push(S,N%8);
N=N/8;
}
while(!Emptystack(S)){
Pop(S,e);
printf("%d",e);
}
}
int main() //主函数
{
Status N;
printf("请输入一个十进制整数:\n");
scanf("%d",&N);
printf("该十进制整数所对应八进制数为:\n");
conversion(N);
return 0;
}
- 数据结构中栈的相关操作
- 数据结构中二叉树的相关操作
- 数据结构实验--栈的相关操作
- 数据结构_栈的相关操作
- 数据结构(5)--栈的定义以及相关操作的实现
- 栈的顺序存储结构的相关操作(数据结构)
- 数据结构学习(八)——顺序栈的相关操作
- 数据结构与算法——栈的相关操作
- 图的相关操作【C++数据结构】
- 树的相关操作(数据结构)
- 图的相关操作(数据结构)
- 数据结构 二叉搜索树的相关操作
- 数据结构--图的相关操作实现
- 【数据结构】搜索二叉树的相关操作
- CPython数据结构相关操作的时间复杂度
- 数据结构:二叉查找树的相关操作
- 数据结构中队列的相关操作
- 数据结构_顺序栈相关操作
- spark小应用二:分组分数排序(SCALA)
- 11.2工作笔记
- 欢迎使用CSDN-markdown编辑器
- 缺数据玩不转机器学习?这里有一份超实用爬虫攻略
- 浅谈TCP/IP模型之传输层
- 数据结构中栈的相关操作
- AIOps核心任务:任务机器人在金融领域中的落地(附文件下载)
- 反射
- python脚本使用ffmeg合并超多ts文件到.mp4
- 读取BLOB数据格式的操作
- 64位Hash算法Pascal版本
- 视频直播时连麦功能使用说明
- 图像识别与处理之Opencv——Mat_类与Mat 类的内存管理
- ios CLLocation定位坐标转换成ArcGIS坐标点