数据结构——顺序栈与链栈的C++实现
来源:互联网 发布:淘宝详情图片格式 编辑:程序博客网 时间:2024/06/15 19:37
顺序栈的实现peStaticStack.h
#include "peStaticStack.h"#define STATICSTACK_SUCCESS0#define STATICSTACK_ERROR1template<class T>class peStaticStack{public:peStaticStack(int size);~peStaticStack(void);int StackSize;int Top;T* Data;int Push(T data);int Pop(T* data);int Pop(void);};template<class T>peStaticStack<T>::peStaticStack(int size){StackSize = size;Top = -1;Data = new T[StackSize];}template<class T>peStaticStack<T>::~peStaticStack(void){delete[] Data;}template<class T>int peStaticStack<T>::Push(T data){if(Top == (StackSize - 1))//栈满return STATICSTACK_ERROR;++Top;Data[Top] = data;return STATICSTACK_SUCCESS;}template<class T>int peStaticStack<T>::Pop(void){if(-1 == Top)//空栈return STATICSTACK_ERROR;--Top;return STATICSTACK_SUCCESS;}template<class T>int peStaticStack<T>::Pop(T* data){if(-1 == Top)//空栈return STATICSTACK_ERROR;*data = Data[Top];--Top;return STATICSTACK_SUCCESS;}
链栈的实现peLinkStack.cpp
#include "peLinkStack.h"#include<stdlib.h>#define LINKSTACK_SUCCESS0#define LINKSTACK_ERROR1template<class T>struct LinkStackStru{T data;LinkStackStru<T>* next;};template<class T>class peLinkStack{public:peLinkStack(void);~peLinkStack(void);LinkStackStru<T>* Top;int Count;int Push(T data);int Pop(T* data);int Pop(void);};template<class T>peLinkStack<T>::peLinkStack(void){Top = (LinkStackStru<T>*)malloc(sizeof(LinkStackStru<T>));Top->next = NULL;Count = 0;}template<class T>peLinkStack<T>::~peLinkStack(void){}template<class T>int peLinkStack<T>::Push(T data){LinkStackStru<T>* p = (LinkStackStru<T>*)malloc(sizeof(LinkStackStru<T>));p->data = data;p->next = Top->next;Top->next = p;++Count;return LINKSTACK_SUCCESS;}template<class T>int peLinkStack<T>::Pop(T* data){return LINKSTACK_SUCCESS;}template<class T>int peLinkStack<T>::Pop(void){if(0 == Count)return LINKSTACK_ERROR;LinkStackStru<T>* p;p = Top->next;Top->next = p->next;--Count;free(p);return LINKSTACK_SUCCESS;}
Main.cpp
#include <iostream>#include "peStaticStack.cpp"#include "peLinkStack.cpp"using namespace std;int main(){peStaticStack<int> peStack(10);peStack.Push(1);peStack.Push(2);peStack.Push(3);peStack.Push(4);peStack.Push(5);peStack.Push(6);peStack.Pop();peStack.Pop();peStack.Pop();cout << "Printf Static Statck:" << endl;cout << "Size = " << peStack.StackSize << endl;cout << "Top = " << peStack.Top << endl;for(int i = 0; i <= peStack.Top; ++i){cout << peStack.Data[i] << endl;}//ipeLinkStack<int> LinkStack;LinkStack.Push(11);LinkStack.Push(22);LinkStack.Push(33);LinkStack.Push(44);LinkStack.Push(55);LinkStack.Push(66);LinkStack.Pop();LinkStack.Pop();cout << "Printf LinkStack:" << endl;cout << "Count = " << LinkStack.Count << endl;LinkStackStru<int>* p;p = LinkStack.Top;for(int i = 0; i < LinkStack.Count; ++i){p = p->next;cout << p->data << endl;}//isystem("pause");return 0;}
程序运行结果
0 0
- 数据结构的C实现_顺序栈
- <数据结构>顺序栈的C语言实现
- 【数据结构】顺序栈的实现(c++)
- 数据结构—栈的顺序的实现
- 数据结构——顺序栈与链栈的C++实现
- 数据结构-------顺序栈与链栈的实现
- 数据结构——顺序栈(C语言实现)
- 数据结构之栈的push与pop操作(顺序存储结构的c实现)
- 数据结构 学习笔记之:顺序栈的C语言实现
- 数据结构:栈的顺序结构及实现(C++)
- 数据结构之---c语言实现栈的顺序存储
- 数据结构--C语言实现栈的顺序存储结构
- 数据结构--顺序栈的实现(C语言)
- 数据结构---栈的顺序实现
- 数据结构-----顺序栈的实现
- 数据结构——顺序栈(c++)
- C语言实现数据结构中的顺序栈
- 数据结构---栈顺序表c实现
- POJ 3036 Honeycomb Walk(DP)
- 【leetcode】two-sum
- Python要self的理由
- poj 2533 Longest Ordered Subsequence
- 使用Dom4j解析xml文件---DomReader方式
- 数据结构——顺序栈与链栈的C++实现
- 黑马程序员——Java泛型通配符的总结
- strcpy函数的实现
- UVA - 11292 Dragon of Loowater
- 计算机网络
- IOS 连续图片组成的动画
- 使用百度网盘下载ed2k文件
- HDU--1234:开门人和关门人
- 使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE解决办法