c++实现基本栈和队列
来源:互联网 发布:javassm开源项目源码 编辑:程序博客网 时间:2024/06/07 02:53
栈和队列是最基本的数据结构,自己实现栈和队列可以更好帮助自己理解和使用c++标准库中为我们提供的栈和队列的操作
//栈---通过链表实现template <class T>struct Node{T _value;Node<T>* _next;Node(){_next = NULL;}Node(T t){_value = t;_next = NULL;}};template <class T>class my_stack{typedef Node<T> Node;private:size_t cnts;//入栈数量Node* _head;public:my_stack(){cnts = 0;_head = new Node();}//入栈void Push(T t){Node *pnode = new Node(t);if(_head->_next==NULL){_head->_next = pnode;}else{pnode->_next = _head->_next;_head->_next = pnode;}cnts++;}//出栈T Pop(){if(_head->_next!=NULL){Node* tmp = _head->_next;_head->_next = _head->_next->_next;T a = tmp->_value;cnts--;delete tmp;return a;}}//返回栈顶元素T Top(){if(_head->_next!=NULL){return _head->_next->_value;}}//打印栈void Print_Stack(){if(_head->_next!=NULL){Node* tmp = _head;while(tmp->_next!=NULL){tmp = tmp->_next;cout<<tmp->_value<<" ";}}cout<<endl;}//获取栈内元素个数size_t Size(){return cnts;}//判空bool Empty(){if(cnts){return false;}return true;}};
//队列---通过顺序表实现#define DEFAULT_SZ 3template <class T>class my_queue{public:my_queue(){_array = (T*)malloc(sizeof(T)*(DEFAULT_SZ));_size = 0;_head = _array;_end = _array;_capacity = 3;}~my_queue(){free(_array);_array = NULL;_head = NULL;_end = NULL;}//在末尾加入一个元素void Push(T t){CheckCapacity();_array[_size] = t;_end = _array+_size;_size++;}void CheckCapacity(){T* tmp = _array;if(_size==_capacity){_array = (T*)realloc(_array,sizeof(T)*(_capacity+=DEFAULT_SZ));_capacity+=DEFAULT_SZ;if(_array == NULL){_array = tmp;}}}//删除第一个元素void Pop(){if(_head!=NULL){T* tmp = _head;_head ++;_size--;}}//返回第一个元素T Front(){if(_head!=NULL){return *_head;}}//返回最后一个元素T Back(){if(_end!=NULL){return *_end;}}//返回队列中元素的个数size_t Size(){return _size;}//如果队列空则返回真bool Empty(){if(_size){return false;}return true;}void Print_Queue(){T* tmp = _head;while(tmp!=_end){cout<<*tmp<<" ";tmp++;}cout<<*tmp<<" ";cout<<endl;}private:T* _array;size_t _size;size_t _capacity;T* _head;T* _end;};
阅读全文
0 0
- 实现基本栈和队列
- C实现栈和队列
- 栈和队列的基本操作实现
- 栈和队列的基本运算实现
- Java实现基本的栈和队列
- c++实现基本栈和队列
- 栈和队列(基本实现)
- 栈和队列 C语言实现
- (C++)栈和队列的模拟实现
- C语言实现,顺序队列,循环队列,和栈!
- c实现队列的基本操作
- (C语言版)栈和队列(一)——实现链式栈和链式队列的基本操作以及遇到的问题
- (C语言版)栈和队列(一)——实现链式栈和链式队列的基本操作以及遇到的问题
- 数据结构 - 栈和队列的基本运算实现
- JS的基本数据结构实现---栈和队列
- 顺序队列(循环队列)基本操作实现 C语言
- “栈和队列”之队列--基本数据结构
- 实验3:栈和队列的基本操作实现及其应用——顺序队列和链队列
- Unbuntu16.04+Kaldi本地运行timit语料(完整版)
- 野(wild)指针与悬空(dangling)指针
- 稳定婚姻问题
- python 使用list和tuple
- 排序算法归类
- c++实现基本栈和队列
- 如何用JavaScript代码编写拖拽
- some tips about python Three
- jsp+Javabean+servlet实现添加删除
- 【博览网】设计模式——第二周课程笔记
- java中synchronized关键字的用法
- 关于mysql的单机多实例方案
- 面试准备
- CF #437