C++ 栈基本操作
来源:互联网 发布:分期贷款软件 编辑:程序博客网 时间:2024/04/30 20:40
一:目的
用C++实现栈的基本操作;
二:实现
1. 首先定义栈的结构和类,书写在stack.h中
# include <iostream>using namespace std;#define STACK_INIT_SIZE 100 //存储空间的初始分配量#define STACKINCREMENT 10 //存储空间的分配增量stackincrementtypedef int SElemType; typedef struct{ SElemType *base;//指向栈底的指针 SElemType *top;//指向栈顶的纸指针 int stacksize;//已分配的存储空间}SqStack;class Stack{public:bool InitStack();//初始化bool push(SElemType val);//进栈操作int pop(SElemType &val);//出栈操作void print();//打印void FreeStack();//释放private:SqStack s;};2. 实现代码放在stack.cpp中,具体如下
# include "statck.h"//初始化栈bool Stack::InitStack(){s.base = (int *)malloc(sizeof(SElemType) * STACK_INIT_SIZE);if(!s.base)return false;s.top = s.base;s.stacksize = STACK_INIT_SIZE;return true;}//进栈操作bool Stack:: push(SElemType val){if(s.top - s.base >= s.stacksize){//已满,重新申请s.base = (int *)realloc(s.base, sizeof(SElemType) * (s.stacksize + STACKINCREMENT));if(!s.base)return false;s.top = s.base + s.stacksize;s.stacksize += STACKINCREMENT;}*s.top =val;s.top++;return true;}//出栈操作int Stack:: pop(SElemType &val){if(s.top == s.base)return false;val = *(s.top-1);s.top--;return true;}//打印void Stack::print(){SElemType *top_temp = s.top;while(top_temp!= s.base && *(top_temp-1)){//栈不为空并且有值top_temp--;cout<< *top_temp<<endl;}}//释放void Stack::FreeStack(){if(s.base == s.top){cout << "队列为空,不需要释放"<<endl;return;}free(s.base);s.top = s.base;s.stacksize = STACK_INIT_SIZE;}3.简单测试如下
Stack s ;s.InitStack();s.FreeStack();s.push(1);s.push(2);s.push(3);s.push(4);s.push(5);s.FreeStack();s.InitStack();s.push(6);s.push(7);s.push(8);s.push(9);s.push(10);s.print();cout << "==========================" << endl;int val;for(int i = 0; i <10;i++){s.pop(val);cout << val << endl;}system("pause");
阅读全文
0 0
- 栈-基本操作(C版)
- 栈的基本操作(C++)
- 栈的基本操作实现-c/c++
- C语言实现栈的基本操作
- 栈的C语言基本操作
- C语言链栈的基本操作
- C语言顺序栈的基本操作
- 数据结构---C语言顺序栈基本操作
- C++-----单链表基本操作
- c++map基本操作
- 【数据结构】顺序栈的基本操作操作---C/C++
- 【数据结构】顺序栈的基本操作操作---C/C++
- c 二叉树基本操作
- C C++ 文件基本操作
- 链表-基本操作(C版)
- 队列-基本操作(C版)
- objective-c 字符串基本操作
- C语言多线程-基本操作
- static关键字,静态变量,静态方法,静态代码块,静态导入
- 大数据与AI的碰撞:这两家科技企业要让“1+1>2”
- CSDN第一篇博客
- VUE 饿了么组件 1.4 table 属性之一
- R packages
- C++ 栈基本操作
- 吐司
- 事务
- R java 配置
- A new deep convolutional neural network for fast hyperspectral image classification Review
- Spring MVC中的四种提交方式
- Java笔记---部署 JavaWeb 项目到云服务器
- Python环境搭建-windows
- Linux设备驱动--字符设备(一)