栈的基本操作
来源:互联网 发布:战舰世界 数据更新出错 编辑:程序博客网 时间:2024/06/03 10:51
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。栈是一种很重要的数据结构。我们可以实现栈的基本操作,比如创建栈,出栈,入栈等。先看一下原理图吧:
以下是栈的实现方式:
#include <stdio.h>#include <malloc.h>#define OK 1#define ERROR 0#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef int ElemType;typedef int Status;typedef struct { ElemType *base; //栈底指针 ElemType *top; //栈顶指针 int stacksize;} SqStack;/**初始化栈*/Status initStack(SqStack &s) { s.base = (ElemType) malloc(STACK_INIT_SIZE * sizeof(ElemType)); //申请空间 if (!s.base) return ERROR; s.top = s.base; //栈顶指针和栈底指针指向同一地址,表示栈为空 s.stacksize = STACK_INIT_SIZE; //初始化栈大小 return OK;}/**获取栈顶元素*/Status getTop(SqStack &s, ElemType &e) { if (s.top == s.base) return ERROR; e = *(s.top - 1); return OK;}/**出栈*/Status pop(SqStack &s, ElemType &e) { if (s.top == s.base) return ERROR; e = *(--s.top); //出栈,top指针下移 return OK;}/*、*入栈*/Status push(SqStack &s, ElemType &e) { if (s.top - s.base >= s.stacksize) { //空间不够,申请增加空间 s.base = (ElemType) realloc(s.base, (s.stacksize + STACKINCREMENT) * sizeof(ElemType)); if (!s.base) return ERROR; s.stacksize += STACKINCREMENT; s.top = s.base + s.stacksize; } *s.top ++ = e; //入栈,top指针上移 return OK;}
2 0
- 栈的基本操作
- 栈的基本操作
- 栈 的基本操作。
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- CGA:自动判断模型间关系的3D建模方法
- 前端学习: HTML 学习
- perl lwp get uft-8和gbk
- 解释型语言与编译型语言的区别
- 前端学习: JS学习
- 栈的基本操作
- 单元测试学习: mock有复杂行为的接口
- 认识与学习bash
- 计算几何学习笔记之旋转卡壳
- 自定义的anim xml文件,关联的时候,没有提示.clean之后还是不能添加上
- C++指针知识点整理
- service启动的变化
- Linux rpm 命令参数使用详解[介绍和应用]
- 百万级别数据,数据库Mysql,Mongodb,Hbase如何选择?