顺序栈的建立
时间:2019-02-14
本文章向大家介绍顺序栈的建立,主要包括顺序栈的建立使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
下个学期学数据结构,其中就有栈,一种很重要的数据结构,所以先学着写一写。
#include <cstdio>
#include <cstdlib>
using namespace std;
const int maxn = 20;
//建立顺序栈
typedef int ele;
typedef struct Stack
{
ele *top;//栈顶指针
ele *base;//栈底指针
}Stack;
//初始化栈
void Init(Stack *s)
{
//为栈分配内存
(s->base) = (ele *)malloc(maxn * sizeof(ele));
if(!(s->base))
{
exit(0);
}
s->top = s->base;
s->len = maxn;
}
//将元素压至栈顶
void Push(Stack *s,int num)
{
//当栈的容量不足时,追加栈的容量
if(s->top - s->base >= s->len)
{
s->base = (ele *)realloc(s->base,(maxn + s->len)*sizeof(ele));//使用realloc函数重新分配内存
if(!(s->base))
{
exit(0);
}
s->top = s->base + s->len;
s->len = s->len + maxn;
}
*(s->top) = num;
s->top++;
}
//弹出栈顶元素
void Pop(Stack *s,ele *n)
{
//如果栈空的话就停止
if(s->base == s->top)
{
return ;
}
*n = *--(s->top);
}
//判断是否栈空(空为真)
bool Empty(Stack *s)
{
if(s->base == s->top)
{
return 1;
}
else
{
return 0;
}
}
//获取栈内元素个数
int Len(Stack *s)
{
return (s->top - s->base);
}
int main(void)
{
Stack st;
Init(&st);
Push(&st,1);
Push(&st,2);
printf("栈内元素个数为%d\n",Len(&st));
int x, y;
Pop(&st,&x);
printf("x = %d\n",x);
if(Empty(&st))
{
printf("栈空\n");
}
else
{
printf("栈不为空\n");
}
Pop(&st,&y);
printf("y = %d\n",y);
if(Empty(&st))
{
printf("栈空\n");
}
else
{
printf("栈不为空\n");
}
return 0;
}
也可以使用STL中的栈容器
在头文件中加入
#include <stack>
常用的几个方法有这些:
stack <int> q;//创建一个名为q的数据类型为整型的栈
q.push();//压入元素进入栈顶
q.pop();//弹出栈顶元素
q.top();//访问栈顶元素(不弹出)
q.empty();//检查是否栈空(空为真)
q.size();//返回栈中元素个数
PS:第一次写博客,有错误请大神指出。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP设计模式之抽象工厂模式实例分析
- 使用python matploblib库绘制准确率,损失率折线图
- Django REST Swagger实现指定api参数
- matplotlib.pyplot.matshow 矩阵可视化实例
- php+mysql开发的最简单在线题库(在线做题系统)完整案例
- python中元组的用法整理
- PHP错误提示It is not safe to rely on the system……的解决方法
- PHP使用mysqli同时执行多条sql查询语句的实例
- 在tensorflow下利用plt画论文中loss,acc等曲线图实例
- PHP生成短网址的思路以及实现方法的详解
- ThinkPHP 3.2.3实现加减乘除图片验证码
- Python数据相关系数矩阵和热力图轻松实现教程
- PHP中md5()函数的用法讲解
- thinkPHP框架实现的简单计算器示例
- Keras在训练期间可视化训练误差和测试误差实例