线性表之顺序栈C++实现
线性表之顺序栈
栈是限定仅在表尾(栈顶)进行插入删除操作的线性表,FILO:先进后出
一、顺序栈的头文件:SeqStack.h
//顺序栈头文件
#include<iostream>
using namespace std;
//设置顺序栈的大小
const int StackSize = ;
template<class DataType>
//定义顺序栈的模板类型
class SeqStack{
public:
//无参构造器,初始化栈顶指针
SeqStack(){ top = -; }
//析构函数为空
~SeqStack(){}
//入栈操作,将元素入栈
void Push(DataType x);
//出栈操作,将栈顶元素弹出栈
DataType Pop();
//取出栈顶元素,不删除栈顶元素(即取出的元素还在栈内)
DataType GetTop();
//判断栈是否为空
int IsEmpty();
private:
//存放站元素的指针
DataType data[StackSize];
//栈顶指针:栈顶元素在数组中的下标
int top;
}; //实现顺序栈入栈操作
template<class DataType>
void SeqStack<DataType>::Push(DataType x)
{
//判断当前顺序栈是否已是满栈
if (top == StackSize - )
{
throw "栈已满";
}
else
{
//如果当前顺序栈不满,则栈顶值栈向上移动一个单元
top++;
//给新的栈顶元素赋值
data[top] = x;
}
} //实现顺序栈出栈,弹出栈顶元素
template<class DataType>
DataType SeqStack<DataType>::Pop()
{
//先判断是否是空栈
if (top == -)
{
throw "栈是空栈";
}
else
{
//若不是空栈,则取出栈顶元素,并删除栈顶元素
DataType x = data[top];
//栈顶指针向下移动一个单元素
top--;
//返回栈顶元素的值
return x;
}
} //实现取出栈顶元素,但不删除取出的元素
template<class DataType>
DataType SeqStack<DataType>::GetTop()
{
//先判断是否是空栈
if (top == -)
{
throw "栈是空栈";
}
else
{
//若不是空栈,则取出栈顶元素的值,但不删除栈顶元素
DataType x = data[top];
//返回栈顶元素的值
return x;
}
} //实现判断顺序栈是否是空栈:栈空返回 1,否则返回 0
template<class DataType>
int SeqStack<DataType>::IsEmpty()
{ if (top == -)
{
return ;
}
else
{
return ;
}
}
二、测试顺序栈的源文件:TestSeqStack.cpp
//测试顺序栈
#include<iostream>
//引入顺序栈头文件
#include"SeqStack.h"
using namespace std;
int main()
{
//创建一个顺序栈
SeqStack<int> seqStack = SeqStack<int>();
//判断是否是空栈
cout << "此时栈是否是空栈:" << seqStack.IsEmpty() << endl;
//入栈
seqStack.Push();
cout << "1 入栈了" << endl;
//判断是否是空栈
cout << "此时栈是否是空栈:" << seqStack.IsEmpty() << endl;
//取出栈顶元素
cout << "栈顶元素是:" << seqStack.GetTop() << endl;
//出栈
seqStack.Push();
cout << "3 入栈了" << endl;
//取出栈顶元素
cout << "栈顶元素是:" << seqStack.GetTop() << endl;
//出栈
seqStack.Push();
cout << "7 入栈了" << endl;
//取出栈顶元素
cout << "栈顶元素是:" << seqStack.GetTop() << endl;
//出栈
seqStack.Push();
cout << "5 入栈了" << endl;
//取出栈顶元素
cout << "栈顶元素是:" << seqStack.GetTop() << endl;
//出栈
cout << "栈顶元素" << seqStack.Pop() << "出栈了" << endl;
//取出栈顶元素
cout << "栈顶元素是:" << seqStack.GetTop() << endl;
//出栈
return ;
}
三、运行示例结果:

线性表之顺序栈C++实现的更多相关文章
- 数据结构算法C语言实现(一)---2.2线性表的顺序表示和实现
注意: 虽然是用C语言实现,但是考虑到使用了一个C++的特性----引用以简化代码,所以所有的代码均以cpp作为后缀,用g++编译(以后不做说明). g++版本: 一.简述 本节主要讲述线性表的顺序实 ...
- C#线性表之顺序表
线性表是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这种一对一的关系指的是数据元素之间的位置关系,即: ...
- D_S 线性表的顺序表示和实现
线性表的顺序表示又称为顺序存储结构或顺序映像 顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构,简言之,逻辑上相邻,物理上也相邻 顺序存储方法:用一组地址连续的存储单元依次存 ...
- javascript实现数据结构:线性表--简单示例及线性表的顺序表示和实现
线性表(linear list)是最常用且最简单的一种数据结构.一个线性表是n个数据元素的有限序列.在稍复杂的线性表中,一个数据元素可以由若干个数据项(item)组成. 其中: 数据元素的个数n定义为 ...
- c/c++ 线性表之顺序表
线性表之顺序表 存储在连续的内存空间,和数组一样. 下面的代码,最开始定义了一个能存8个元素的顺序表,当超过8个元素的时候,会再追加开辟空间(函数:reInit). 实现了以下功能: 函数 功能描述 ...
- 已知长度为n的线性表采用顺序结构,写一算法删除该线性表中所有值为item的元素
/** * @author:(LiberHome) * @date:Created in 2019/2/27 23:34 * @description: * @version:$ */ /*已知长度为 ...
- 线性表之顺序表C++实现
线性表之顺序表 一.头文件:SeqList.h //顺序线性表的头文件 #include<iostream> ; //定义顺序表SeqList的模板类 template<class ...
- 线性表中顺序表的的理解和实现(java)
线性表的顺序表示指的是用一组地址连续的存储单元以此存储线性表的数据元素,这种表示也称作线性表的顺序存储结构或顺序映像.通常,称这种存储结构的线性表为顺序表.特点是:逻辑上相邻的数据元素,其物理次序上也 ...
- [C++]数据结构:线性表之顺序表
1 顺序表 ADT + Status InitList(SeqList &L) 初始化顺序表 + void printList(SeqList L) 遍历顺序表 + int ListLengt ...
随机推荐
- zookeeper zkClient api 使用
操作步骤: 一.引入zkclient的jar包(maven方式) <dependency> <groupId>com.101tec</groupId> <ar ...
- nanosleep()
函数原型 #include <time.h> int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); 描述 ...
- shell监控网站是否自动运行并自动重启【原创】
shell监控网站是否自动运行并自动重启 #!/bin/bash -T www.baidu.com ];then echo "`date` 网站访问正常!" >> /r ...
- openjudge-NOI 2.5-1700 八皇后问题
题目链接:http://noi.openjudge.cn/ch0205/1700/ 题解: 经典深搜题目…… #include<cstdio> ][]; int num; void pri ...
- 转载: Android开源库V - Layout:淘宝、天猫都在用的UI框架,赶紧用起来吧!
阿里的UI库... 分析的很精辟... http://blog.csdn.net/carson_ho/article/details/71077193
- No.16 selenium学习之路之异常处理
一.常见的几种异常: SyntaxError:语法错误 NameError:试图访问的变量名不存在 IndexError:索引错误,使用的索引不存在,超出序列范围 KeyError:使用了不存在的关键 ...
- POJ 2516 Minimum Cost(拆点+KM完备匹配)
题目链接:http://poj.org/problem?id=2516 题目大意: 第一行是N,M,K 接下来N行:第i行有K个数字表示第i个卖场对K种商品的需求情况 接下来M行:第j行有K个数字表示 ...
- 【[SDOI2009]Bill的挑战】
一看题解好像全是状压DP,那么我就来补充一个容斥写法吧 乍一看,好像是水题,枚举选哪k个串,然后判断 1,如果这k个串中至少两个串某位置确定且不相同,答案显然为02,如果这个位置只被有且仅有一个串确定 ...
- <编程之美>经典面试题:求二叉树节点的最大距离(我的解法,最容易理解的版本?)
题目介绍: 如果把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两个节点之间的个数. 写一个程序求一棵二叉树中相距最远的两个节点之间的距离. 如下图所示, ...
- 宝塔Linux常用命令
https://www.bt.cn/bbs/thread-1186-1-1.html 2017年3月8日发布全新架构的宝塔Linux 面板3.1Beta版,到现在的5.2.0正式版,历经100多天打磨 ...