- 浏览: 761649 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
SeqStack.h
SeqStack.cpp
#ifndef SEQSTACK_H #define SEQSTACK_H #include<iostream> #include<assert.h> #include"Stack.h" using namespace std; const int stackIncrement = 20; template<typename T> class SeqStack:public Stack<T>{ public: SeqStack(int sz=50); ~SeqStack(){delete[]elements;} void Push(const T &x); bool Pop(T &x); bool getTop(T &x) const; bool IsEmpty() const{ return top==-1?true:false; } bool IsFull() const{ return top==maxSize-1?true:false;//如果栈顶指针top==maxSize-1说明已满 } int getSize() const{ return top+1; } void makeEmpty(){ top = -1; } friend ostream& operator<<(ostream& os,SeqStack<T>& s){ for(int i=0;i<=s.top;++i) os << s.elements[i] << " "; os << endl; return os; } private: T *elements; int top;//指示最后加入的元素的位置 int maxSize; void overflowProcess();//栈溢出处理 }; #endif // SEQSTACK_H
SeqStack.cpp
#include"SeqStack.h" template<typename T> SeqStack<T>::SeqStack(int sz):top(-1),maxSize(sz) { elements = new T[maxSize]; assert(NULL!=elements); } /* 栈溢出处理 */ template<typename T> void SeqStack<T>::overflowProcess() { T *newArray = new T[maxSize+stackIncrement]; assert(NULL!=newArray); for(int i=0;i<=top;++i){//top是从0开始的 newArray[i] = elements[i]; } maxSize+=stackIncrement; delete []elements; elements = newArray; } template<typename T> void SeqStack<T>::Push(const T &x) { if(IsFull()){ overflowProcess(); } top++; elements[top]=x; } template<typename T> bool SeqStack<T>::Pop(T &x) { if(not IsEmpty()){ x = elements[top]; top--; return true; }else{ return false; } } template<typename T> bool SeqStack<T>::getTop(T &x) const { if(not IsEmpty()){ x = elements[top]; return true; }else{ return false; } } int main() { SeqStack<int> ss(10); for(int i=0;i<10;++i) ss.Push(i); cout<<ss; int num = 0; ss.Pop(num); cout << ss; for(int i=10;i<=20;++i) ss.Push(i); cout << ss; } 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 10 11 12 13 14 15 16 17 18 19 20
发表评论
-
时间复杂度推导
2012-06-05 22:57 9791.用常数1取代运行时间中的所有加法常数 2.在修改后的运行次 ... -
数据结构概论2
2012-06-04 22:19 805数据元素:组成数据的,有一定意义的基本单位,在计算机中通常作为 ... -
排序概念
2011-06-24 14:51 782数据表:待排序数据元素的有很集合 排序码:通常数据元素有多个 ... -
图的基本概念
2011-06-20 16:18 746完全图:n个顶点,n*(n-1)/2个边的无向图,就是无向完全 ... -
红黑树
2011-06-16 14:29 511红黑树: 1.根结点和所有的叶结点都是黑色 2.从根结点到叶结 ... -
链表反转
2011-06-12 18:03 1097template<typename T> v ... -
散列表(哈希表)
2011-06-09 09:55 1077散列表(hash table):是表示集合和字典的另一种有效方 ... -
跳 表
2011-06-08 11:12 800#ifndef SKIPLIST_H #define S ... -
字 典
2011-06-08 10:06 924字典:以集合为基础,并支持支持Member,Insert和Re ... -
LinkedSet
2011-06-07 13:08 921改了很久的bug #ifndef LINKEDSET_H ... -
bitset
2011-06-06 12:27 883bitSet.h #ifndef BITSET_H #d ... -
Huffman树
2011-06-02 11:06 910Huffman树,又称最优二叉树,是一类加权路径长度最短的二叉 ... -
堆
2011-06-02 09:19 949在优先级队列的各种实现中,堆是最高效的一种数据结构 关键码: ... -
森 林
2011-06-01 11:09 596森林与二叉树互转,主要是子结点转左子树,兄弟结点转右子树 深 ... -
二叉树的链式实现
2011-05-31 11:24 1263binaryTree.h #ifndef LINKEDBI ... -
二叉树基本概念
2011-05-30 10:05 841一棵二叉树的结点的一个有限集合:该集合或者为空,或者是由一个根 ... -
树基本概念
2011-05-30 09:28 888结点(node):包含数据项及指向其他结点的分支。 结点的度( ... -
广义表
2011-05-27 10:57 933广义表的定义是递归的,因为在表的描述中又用到了表,允许表中有表 ... -
矩阵相关
2011-05-26 10:22 929矩阵:是一个具有m行n列的二维数组。 上三角矩阵:只存储对角 ... -
优先级队列
2011-05-21 11:24 598PQueue.h #ifndef PQUEUE_H #d ...
相关推荐
在本资源"算法-理论基础- 栈- 顺序栈(包含源程序).rar"中,我们将深入探讨一种重要的数据结构——栈,以及它的具体实现:顺序栈。 栈是一种具有后进先出(Last In, First Out,简称LIFO)特性的数据结构。在栈中...
数据结构-基本算法-顺序栈(学生时代源码,调试可运行)
数据结构--顺序栈的基本运算.pdf
### C++ 实现顺序栈详解 #### 一、引言 在计算机科学中,栈(Stack)是一种只能在一端进行插入或删除操作的线性表,通常被称作“先进后出”(First In Last Out,FILO)或“后进先出”(Last In First Out,LIFO)...
顺序栈-括号匹配(1).cpp
数据结构--顺序栈的基本运算 顺序栈是一种基本的数据结构,广泛应用于计算机科学和软件开发领域。顺序栈的基本运算包括初始化顺序栈、判断顺序栈是否为空、依次进栈元素、输出栈长度、输出从栈顶到栈底的元素、读出...
在本项目中,我们关注的是一个特定的数据结构——顺序栈,以及如何利用它来解决迷宫求解问题。顺序栈是一种线性数据结构,它的元素按顺序排列,操作主要涉及在栈顶进行插入(压栈)和删除(弹栈)。 首先,让我们...
* 顺序栈的实现:使用C语言实现顺序栈的操作,包括init函数、push函数、pop函数和print函数。 2. 栈的链式存储结构: * 链栈的定义:使用链表来存储栈元素,每个结点包含数据和指向下一结点的指针。 * 链栈的操作...
在顺序栈中,元素被存储在一块连续的内存区域中,就像一个数组。这种存储方式使得访问任何位置的元素都非常高效,因为内存地址是连续的,但插入和删除操作可能需要移动元素。以下是顺序栈的基本操作: 1. 创建栈:...
栈的顺序存储即顺序栈是指,用一块连续的内存来存放一个栈,类似于数组,各元素在内存中是一个挨一个的。既然栈也是线性表,那么栈就可以通过线性表来实现,实现顺序栈只需在顺序表的插入删除操作时,只限定在一端...
在顺序栈中,我们有以下基本操作: - **压栈(Push)**:当栈未满时,将新元素添加到栈顶。 - **弹栈(Pop)**:移除并返回栈顶元素,如果栈为空,则不允许执行此操作。 - **查看栈顶元素(Peek或Top)**:不移除地...
顺序栈是其中一种基础且重要的数据结构,尤其在Linux系统编程中有着广泛的应用。本篇将深入探讨顺序栈的概念、实现以及在Linux环境下的应用。 顺序栈,顾名思ity,是指元素在内存中按线性顺序排列的栈。它类似于一...
在这个主题中,我们将专注于两种基本的线性数据结构:栈和队列,特别是C语言实现的顺序栈。顺序栈是一种在内存中连续分配空间的抽象数据类型,它具有后进先出(LIFO)或先进后出(FILO)的特性。 ### 栈的基本概念 ...
数据结构是计算机科学中的核心概念,它涉及到如何高效地组织和操作数据。在这个主题中,我们将深入探讨一种特殊的数据...在实际应用中,根据需求选择合适的数据结构,如顺序栈或链式栈,能够有效提升程序的性能和效率。
在本文中,我们将深入探讨一种重要的线性结构——顺序栈,以及在其上执行的各种操作。 顺序栈是一种特殊的数据结构,属于线性表的范畴。线性表是由n个相同类型元素构成的有限序列,而在顺序栈中,这些元素是按照...
这个"Android模拟Activity进出栈-IT计算机-毕业设计.zip"文件包含了一个演示如何模拟Activity在应用程序中按照栈(Stack)行为进行管理的示例项目。这个项目对于理解和实践Android的Activity生命周期以及任务和返回...
本文将深入探讨一种常用的数据结构——栈,特别是顺序栈和链表栈,它们都是实现栈功能的不同方式。栈通常被称为“后进先出”(LIFO,Last In First Out)的数据结构,广泛应用于各种算法和程序设计中,如表达式求值...
链式栈是一种特殊的栈数据结构,它通过动态内存分配实现元素的存储,而非像顺序栈那样受限于数组的固定容量。在本题中,我们利用链式栈来处理任意四则运算,即加法、减法、乘法和除法。这种运算涉及到操作符的优先级...
顺序栈是一种常见的数据结构,它遵循“后进先出”(LIFO)的原则。在顺序栈中,元素存储在一块连续的内存区域中,通过数组或动态数组来实现。顺序栈的操作通常包括初始化、判断栈是否为空、获取栈顶元素、进栈(压栈...