- 浏览: 761629 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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)
最新评论
LinkedStack.h
#ifndef LINKEDSTACK_H #define LINKEDSTACK_H #include<iostream> #include"../T2/LinkedList.h" //LinkNode #include"Stack.h" using namespace std; template<typename T> class LinkedStack:public Stack<T>{ public: LinkedStack():top(NULL){} ~LinkedStack(){makeEmpty();} void Push(const T &x); bool Pop(T &x); bool getTop(T &x) const; bool IsEmpty() const{ return top==NULL?true:false; } bool IsFull() const{ return false; } int getSize() const; void makeEmpty(); friend ostream& operator<<(ostream& os,LinkedStack<T>& s){ LinkNode<T> *p = s.top; while(NULL!=p){ cout << p->data << " "; p = p->link; } cout << endl; return os; } private: LinkNode<T> *top; }; #endif // LINKEDSTACK_H
#include"LinkedStack.h" #include<assert.h> template<typename T> void LinkedStack<T>::makeEmpty() { LinkNode<T> *p; while(NULL!=top){ p = top; top = top->link; delete p; } } template<typename T> void LinkedStack<T>::Push(const T &x) { top = new LinkNode<T>(x,top); assert(NULL!=top); } template<typename T> bool LinkedStack<T>::Pop(T &x) { if(IsEmpty()){ return false; }else{ x = top->data; LinkNode<T>* p; p = top; top = top->link; delete p; return true; } } template<typename T> bool LinkedStack<T>::getTop(T &x) const { if(IsEmpty()){ return false; }else{ x = top->data; return true; } } template<typename T> int LinkedStack<T>::getSize() const { if(IsEmpty()){ return 0; }else{ int size = 0; LinkNode<T> *p = top; while(NULL!=p){ p = p->link; size++; } return size; } } int main() { LinkedStack<int> ls; for(int i=0;i<10;++i){ ls.Push(i); } cout << ls; cout << ls.getSize() << endl; int num; for(int i=0;i<5;++i){ ls.Pop(num); } cout << ls; } 9 8 7 6 5 4 3 2 1 0 10 4 3 2 1 0
发表评论
-
时间复杂度推导
2012-06-05 22:57 9781.用常数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”中,我们可以深入学习栈的理论基础以及链栈的具体实现,同时通过源程序加深理解。 首先,我们要了解栈的基本概念。栈是一种线性数据结构,它的主要...
数据结构实验报告--链栈编写迷宫.doc
本项目中,模版类被用来实现两种常见的数据结构——顺序栈和链栈,这两种栈都遵循后进先出(LIFO)的原则。下面我们将详细探讨这些知识点。 首先,**顺序栈**是基于数组实现的栈。在C++中,可以定义一个名为`...
与传统的数组栈不同,链栈使用链表作为底层数据结构,而不是连续的内存空间。这种设计使得链栈在处理动态变化的数据量时更加灵活。 在链栈中,元素的插入(压栈)和删除(弹栈)操作并不像数组栈那样受限于栈顶索引...
本实例主要探讨的是栈(Stack)这一数据结构,特别是链栈(Linked Stack)和顺序栈(Sequential Stack)的操作。 栈是一种后进先出(Last In First Out, LIFO)的数据结构,它在处理递归、表达式求值、函数调用等...
### 数据结构课程:顺序栈和链栈的实现 #### 栈的基本概念 栈是一种特殊的线性表,其特殊之处在于所有元素的插入和删除都只能在一端进行,这一端被称为栈顶(top),与之相对的一端称为栈底(bottom)。栈通常支持以下...
链栈是一种基于链表实现的栈,与数组栈不同,链栈在动态扩展和内存管理上具有更大的灵活性。 链栈由一系列节点组成,每个节点包含一个数据元素(在这里是表达式的操作数或运算符)和指向下一个节点的指针。栈的基本...
括号匹配问题是编程语言编译器在进行语法分析时经常遇到的问题,通过该实验,学生不仅能够学习到链栈的基本操作方法,还能进一步了解栈在实际应用中的重要作用。 #### 实验原理与背景知识 1. **栈的概念**: - 栈...
本话题聚焦于一种特定的应用——使用C++实现的顺序栈和链栈,将10进制数转换为2、8、16进制。这里我们将深入探讨顺序栈和链栈的概念,以及它们如何应用于不同进制之间的转换。 首先,顺序栈是一种基于数组的数据...
本主题主要探讨两种常见的栈实现:顺序栈和链栈。栈是一种特殊的线性数据结构,遵循“后进先出”(LIFO)的原则,即最后入栈的元素最先出栈。 首先,我们来详细了解一下顺序栈。顺序栈是用一维数组来实现的栈,其...
栈和链栈是数据结构中的两种基本操作机制,它们在计算机科学中扮演着重要的角色,尤其是在算法设计和程序实现中。栈是一种后进先出(Last In First Out, LIFO)的数据结构,而链栈是栈的一种具体实现方式,利用链式...
顺序栈与链栈的实现 本文将详细介绍顺序栈和链栈的实现,包括它们的数据结构、操作和应用。 一、顺序栈 顺序栈是一种基于数组的栈实现,它使用一个数组来存储栈中的元素。顺序栈的优点是访问速度快、实现简单,...
顺序栈和链栈的插入和删除实验报告 一、顺序栈和链栈的概念 顺序栈是一种线性数据结构,它使用数组来存储元素,每个元素按照顺序存储在数组中。链栈是一种链式数据结构,它使用链表来存储元素,每个元素都是一个...
1、 会定义顺序栈和链栈的结点类型。 2、 掌握双向栈的结构特点及其在一维数组中的实现。 3、 掌握在双向栈中进行插入和删除元素的方法。 二、 实验要求 1、 定义栈的存储结构。 2、 编写程序实现双向栈的基本操作...
在这个主题中,我们将专注于栈(Stack)这一特殊的数据结构,及其在实际应用中的两种主要实现方式:顺序栈(Sequential Stack)和链栈(Linked Stack)。栈通常被称为“后进先出”(LIFO,Last In First Out)的数据...
在这个实验中,我们将关注四种特定的数据结构:共享栈、链栈、循环队列和链队列。这些数据结构在各种算法和应用程序中都有广泛应用。 首先,我们来看共享栈(Shared Stack)。共享栈是一种特殊的栈,其中多个线程...
本实验主要探讨了四种数据结构:顺序栈、链栈、循环队列和链队列,这些都是在编程实践中常用的抽象数据类型。 1. **顺序栈**: - 顺序栈是一种线性数据结构,其元素在内存中连续存放,类似于数组。栈的特点是...
本文将详细讨论在C语言中如何实现栈,包括顺序栈和链栈,并基于提供的文件名来解析它们的实现。 1. **顺序栈**:顺序栈是通过数组来实现的,其优点在于存储空间连续,访问速度快。`stack_array.c`和`stack_array.h`...
文件"链栈 (2).doc"可能包含了更详细的解释,比如链栈的其他操作,如合并两个链栈、查找某个元素在栈中的位置等,或者对链栈在实际问题中的应用,如表达式求值、深度优先搜索等。这些扩展功能和应用场景进一步展示了...