[数据结构]栈的实现-C++
来源:互联网 发布:淘宝卖家订购哪些服务 编辑:程序博客网 时间:2024/06/05 20:22
栈用两种方法实现,一种是链表,一种是数组
栈使用数组实现:
//StackBaseArray.h
#pragma oncetemplate <class T>class StackBaseArray {private:T *array;int maxLength=1;int top;public:StackBaseArray();StackBaseArray(int maxLength);bool push(T value);T pop();T peek();bool clear();bool isEmpty();};
//StackBaseArray.cpp
#include"StackBaseArray.h"template <class T> StackBaseArray<T>::StackBaseArray() {maxLength = 64;array = new T[64];top = -1;}template <class T> StackBaseArray<T>::StackBaseArray(int maxLength) {this->maxLength = maxLength;array = new T[maxLength];top = -1;}template <class T> bool StackBaseArray<T>::push(T value) {if (top == maxLength - 1) {return false;}top++;array[top] = value;return true;}template <class T> T StackBaseArray<T>::pop() {if (top == -1) {return NULL;}top--;return array[top + 1];}template <class T> T StackBaseArray<T>::peek() {if (top == -1) {return NULL;}return array[top];}template <class T> bool StackBaseArray<T>::clear() {top = -1;return true;}template <class T> bool StackBaseArray<T>::isEmpty() {if (top == -1) {return true;}else {return false;}}
栈使用链表实现
//StackBaseLinkedList.h
#pragma oncetemplate <class T>struct Node {T value;Node *next;};template <class T>class StackBaseLinkedList {private:Node<T> *head;public:StackBaseLinkedList();bool push(T value);T pop();T peek();bool clear();bool isEmpty();};
//StackBaseLinkedList.cpp
#include"StackBaseLinkedList.h"template <class T> StackBaseLinkedList<T>::StackBaseLinkedList() {head = NULL;}template <class T> bool StackBaseLinkedList<T>::push(T value) {if (head == NULL) {head = new Node<T>;head->value = value;head->next = NULL;}else {Node<T> *n = new Node<T>;n->value = value;n->next = head;head = n;}return true;}template <class T> T StackBaseLinkedList<T>::pop() {if (head == NULL) {return NULL;}else {T value = head->value;head = head->next;return value;}}template <class T> T StackBaseLinkedList<T>::peek() {if (head == NULL) {return NULL;}else {return head->value;}}template <class T> bool StackBaseLinkedList<T>::clear() {head = NULL;return true;}template <class T> bool StackBaseLinkedList<T>::isEmpty() {if (head == NULL) {return true;}else {return false;}}
阅读全文
0 0
- C语言实现堆栈(栈)的数据结构
- 数据结构的C实现_顺序栈
- <数据结构>顺序栈的C语言实现
- <数据结构>链栈的C语言实现
- [数据结构]C语言栈的实现
- 数据结构栈的C语言实现
- 【数据结构】顺序栈的实现(c++)
- 数据结构之栈的c语言实现
- [数据结构]栈的C语言简单实现
- 【数据结构】数据结构C语言的实现(栈)
- 数据结构C语言实现栈
- 数据结构 链式 栈 c实现
- 数据结构.栈(C语言实现)
- 数据结构---栈C语言实现
- 数据结构之栈(C实现)
- 数据结构栈C语言实现
- 数据结构(栈)c/c++/java实现
- 数据结构C语言之栈的简单实现
- 石子合并
- css 的规律摸索之路(二)css之居中问题(垂直居中与水平居中)
- ABP官方文档翻译 3.4 领域服务
- JavaBean的三种标记
- 计算机硬件基础
- [数据结构]栈的实现-C++
- 语法
- 【MFC】生成一条三次Bezier曲线
- 将javaweb项目部署到阿里云
- c++作业6
- 【C/C++】计时函数比较
- [bzoj] 1077: [SCOI2008]天平
- 【解题报告】POJ-2528 Mayor's posters 线段树+离散化
- TCP网络编程中connect() 、listen() 和accept()三者之间关系