c++数据结构——模板类重写栈
来源:互联网 发布:怎么逃避淘宝清洗订单 编辑:程序博客网 时间:2024/05/24 05:57
模板重写栈的基本操作,不多说,上代码,不足之处,麻烦大神指点。。。
基本操作如下:
bool Is_Empty(my_stack*a);//是否为空栈T GetTop(my_stack*a);//获取栈顶元素void Stack_Push(my_stack*a,T b);//入栈T Stack_Pop(my_stack*a);//出栈int StackLenth(my_stack* a);//获取栈的长度my_stack* StackClear(my_stack* a);//清空栈内元素void StackDestroy(my_stack* a);//销毁栈整个的代码如下:
#ifndef data_structure_stack_h#define data_structure_stack_h#include <iostream>#include<vector>#include<functional>//建立自己的模板函数using namespace std;//栈和队列的实现//前置申明模板友元类template<typename > class Stack_Node;template<typename > class my_stack;template<typename T>bool operator== (const my_stack<T>&,const Stack_Node<T>&);template<typename T> class Stack_Node{public:friend class my_stack<T>;Stack_Node(){};Stack_Node(T a):value(a),next(NULL){};~Stack_Node(){};private:T value;Stack_Node *next;};template<typename T> class my_stack:public Stack_Node<T>{public:my_stack(){};~my_stack(){};my_stack(T a){top=new Stack_Node(a);len=1;}bool Is_Empty(my_stack*a);//是否为空栈T GetTop(my_stack*a);//获取栈顶元素void Stack_Push(my_stack*a,T b);//入栈T Stack_Pop(my_stack*a);//出栈int StackLenth(my_stack* a);//获取栈的长度my_stack* StackClear(my_stack* a);//清空栈内元素void StackDestroy(my_stack* a);//销毁栈private:int len;Stack_Node *top;};template<typename T>bool my_stack<T>::Is_Empty(my_stack*a){if(a->len) return false;else return true;}template<typename T>T my_stack<T>::GetTop(my_stack*a){if(a->len) return a->top->value; else {cout<<"the stack is empty! ";exit(-1);}}template<typename T>void my_stack<T>::Stack_Push(my_stack*a,T b){Stack_Node *p=new Stack_Node(b);p->next=a->top;a->top=p;a->len++;}template<typename T>T my_stack<T>::Stack_Pop(my_stack*a){if(a->len){T temp=a->top->value;a->top=a->top->next;a->len--;return temp;}else {cout<<"the stack is empty!";exit(-1);}}template<typename T>int my_stack<T>::StackLenth(my_stack* a){return a->len;}template<typename T>my_stack<T>* my_stack<T>::StackClear(my_stack* a){my_stack *head;head=a;a->top=a->top->next;a->len--;while(a->len){Stack_Node * p=a->top->next;delete a->top;a->top=p;a->len--;}a=head;a->top=NULL;a->len=0;return head;}template<typename T>void my_stack<T>::StackDestroy(my_stack* a){my_stack *head;head=a;a->top=a->top->next;a->len--;while(a->len){Stack_Node * p=a->top->next;delete a->top;a->top=p;a->len--;}delete head->top;delete head;}#endif测试代码如下:
#include "data_structure_stack.h"int main(){my_stack<int>* my1=new my_stack<int>(1);my1->Stack_Push(my1,4);my1->StackDestroy(my1);bool aa=my1->Is_Empty(my1);return 0;}
0 0
- c++数据结构——模板类重写栈
- c++数据结构——模板类重写二叉树
- 模板重写数据结构——链表
- 数据结构—KMP模板
- [数据结构]栈的实现(c++/类模板)
- C#——重写与抽象类
- 数据结构(C++)----单链表模板类
- 数据结构(c++)最小堆模板类
- 数据结构——字符串函数的重写
- C++类模板实现数据结构——栈
- 数据结构——基本栈的模板类
- 数据结构——顺序双栈模板类实现
- 数据结构——链式栈模板类实现
- 数据结构——单链表模板类
- 数据结构—类模板实现链表
- 数据结构(c)——栈
- 重写数据结构--栈和队列
- C#—抽象类使用及方法重写与重载
- 【机器学习】非平衡数据集的机器学习常用处理方法
- 【Python】三种遍历文件目录的方法
- Android 自定义属性,系统控件扩展
- windows下使用GUI 把本地代码提交到git远程仓库
- 从源码角度深入理解Handler
- c++数据结构——模板类重写栈
- JDBC-MySql简单的查询和插入数据
- java中的8个基本数据类型
- 控件懒加载
- Centos系统备份与恢复教程
- Windows Server 2008 R2 简体中文版 显示中文乱码
- 字符类型 String 怎样转换成 日期类型 Date?
- hdu(5504)——GT and sequence
- jQuery基本选择器