(转载)顺序栈c++实现
(转载)http://myswirl.blog.163.com/blog/static/51318642200882310239324/
SqStack.h
****************************************
#include <iostream>
using std::cout;
using std::endl;
template <class T>
class SqStack{
public:
SqStack(int init=50, int incr=10);
bool StackEmpty() const;//判断栈是否为空
T *GetTop() const;//得到栈顶指针
void StackTraverse() const;
bool Push(T &s);//入栈
bool Pop(T &p);//出栈
~SqStack();
private:
int size; //允许的最大存储空间以元素为单位
int increaseSize;//递增大小
T *base; //存储空间基址
int top; //栈顶指针,栈元素个数
};
//构造函数
template <class T>
SqStack<T>::SqStack(int init, int incr){
size = init; //初始大小
base = new T[size];
if(!base)exit(1);//存储分配失败
increaseSize = incr; //顺序表递增大小
top = 0; //空栈中元素个数为0
}
template <class T>
bool SqStack<T>::StackEmpty() const{
return top == 0;
}
//返回栈顶指针
template <class T>
T *SqStack<T>::GetTop() const{
if( top == 0 )return NULL;//空栈
return base+top-1;
}
template <class T>
void SqStack<T>::StackTraverse() const{
if( top == 0 ){
cout<<"遍历为空栈"<<endl;
}else{
//栈底到栈顶输出
cout<<"栈底到栈顶: ";
for(int i=0; i<top; i++){
cout << *(base+i) << " ";
}
cout<<endl;
}
}
//入栈
template <class T>
bool SqStack<T>::Push(T &s){
if(top == size)return false; //栈已满,无法进行插入
*(base + top) = s;//插入新的元素
++top;
return true;
}
//出栈,返回删除元素的指针
template <class T>
bool SqStack<T>::Pop(T &p){
if( top == 0 )return false;//空栈
p = *(base+top-1);
--top;
return true;
}
//析构函数
template <class T>
SqStack<T>::~SqStack(){
cout << "调用析构函数" << endl;
delete base;
base = NULL;
}
*****************************************
main.cc
**********************************************
#include "SqStack.h"
int main()
{
SqStack<int> *s = new SqStack<int>;
int a = 0;
int b = 1;
int c = 2;
if(s->Push(a)){
cout << "入栈成功!a"<<endl;
}
if(s->Push(b)){
cout << "入栈成功!b"<<endl;
}
if( s->GetTop() != NULL ){
cout << "栈顶元素: " << *(s->GetTop()) << endl;
}else{
cout << "空栈了" <<endl;
}
s->StackTraverse();
int p;
if( s->Pop(p)){
cout << "出栈成功!" << p << endl;
}else{
cout << "空栈" << endl;
}
if( s->GetTop() != NULL ){
cout << "栈顶元素: " << *(s->GetTop()) << endl;
}else{
cout << "栈顶元素:NULL" <<endl;
}
s->StackTraverse();
return 0;
}
**********************************************
(转载)顺序栈c++实现的更多相关文章
- 数据结构:C_顺序栈的实现
数据结构顺序栈的实现(C语言版) 1.写在前面 栈是一种遵循元素先进(Push)后出(Pop)规则的线性表,它的实现可以用数组或者链表. ..... 2.代码分解 2.1对栈的结构定义: typede ...
- D_S 顺序栈的基本操作
// main.cpp #include <iostream> using namespace std; #include "Status.h" typedef in ...
- 数据结构Java实现05----栈:顺序栈和链式堆栈
一.堆栈的基本概念: 堆栈(也简称作栈)是一种特殊的线性表,堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和删除操作,而堆栈只允许在固定一端进行插入和删除 ...
- 01顺序栈_Stack---(栈与队列)
#include "stdio.h" #include "stdlib.h" #include "io.h" #include " ...
- 把十进制整数转换为r(r=2)进制输出(顺序栈实现)
上周的第二个作业补上~~ 上周的要求: 1.给出顺序栈的存储结构定义. 2.完成顺序栈的基本操作函数. 1) 初始化顺序栈 2) 实现入栈和出栈操作 3) 实现取栈顶元素 ...
- 数据结构之顺序栈SqStack
顺序栈SqStack 基本操作 Status InitStack()//构造一个空栈S Status DestroyStack()//销毁栈S,S不再存在 Status ClearStack()//把 ...
- 顺序栈之C++实现
顺序栈就是用顺序表(数组)实现的栈.其组织形式如下图所示: 下面介绍下我用C++实现的顺序栈,在VC6下调试通过.不足之处还请指正. 1.文件组织 2.ss.h栈类的声明及宏的定义 #ifndef _ ...
- 顺序栈和链式栈(C++实现)
顺序栈,是一种基于数组的存储表示. 实现类代码如下: template<class T> class SeqStack{ T *element; int top; int maxSize; ...
- salesforce零基础学习(七十六)顺序栈的实现以及应用
数据结构中,针对线性表包含两种结构,一种是顺序线性表,一种是链表.顺序线性表适用于查询,时间复杂度为O(1),增删的时间复杂度为O(n).链表适用于增删,时间复杂度为O(1),查询的时间复杂度为O(n ...
- 【小白成长撸】--顺序栈(C语言版)
// 顺序栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h"//test1.0--栈表仅限Int类型 #include <stdio. ...
随机推荐
- iOS开发——真机调试证书—发布证书
(最近准备考试,空闲整理成博客……)
- jfinal不能正确加载html网页,总是报错的解决方法
今天自学jfinal,遇到一个很奇怪的问题,render("/index.html");总是报错. 仔细看错误日志,才发现原来是因为html网页放到了WEB-INF文件夹下面了,所 ...
- objective-c中的category
如果有如下一个类 #import <Foundation/Foundation.h> @interface Person : NSObject @property int age; @en ...
- thinkphp 模板中赋值
在项目开发的时候,有时候希望直接在模板中调用 一些自定义方法,或者内置方法来,处理获得一些数据,并且赋值给一个变量给后面调用,这个时候如果用原生Php 的方式调用如下:<?php $abc = ...
- 用crontab、crond在嵌入式系统中添加定时任务
在嵌入式系统中,定时任务通过crond和cronttab两个系统命令来联合执行. 其中crond是定时任务的守护进程,系统开始时是没有开启的.crontab主要作用是管理用户的crontab file ...
- 24种设计模式--策略模式【Strategy Pattern】
刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题,嘿,还别说,真是解决了大问题,搞到最后是周瑜赔了夫人有折兵呀,那咱们先看看这个场景是什么样子的. 先说这个场景 ...
- [翻译][MVC 5 + EF 6] 4:弹性连接和命令拦截
原文:Connection Resiliency and Command Interception with the Entity Framework in an ASP.NET MVC Applic ...
- ASP.NET全局文件与防盗链
添加Web→全局应用程序类,注 文件名不要改 Global.asax 全局文件是对Web应用声明周期的一个事件响应的地方,将Web应用启动时初始化的一些代码写到 Application_Start中, ...
- jquery-ui-datepicker定制化,汉化,因手机布局美观化源码修改
感谢浏览,欢迎交流=.= 公司微信网页需要使用日历控件,想到jquery-mobile,但是css影响页面布局,放弃后使用jquery-ui-datepicker. 话不多说,进入正题: 1.jque ...
- css3动画使用技巧之—JQ配合css3实现轮播之animation-delay应用
<!DOCTYPE html> <html> <head> <title>css3动画使用技巧之—JQ配合css3实现轮播之animation-dela ...