模板重寫棧的基本操作,不多說,上**,不足之處,麻煩大神指點。。。
基本操作如下:
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 #include#include//建立自己的模板函式
using namespace std;
//棧和佇列的實現
//前置申明模板友元類
templateclass stack_node;
templateclass my_stack;
templatebool operator== (const my_stack&,const stack_node&);
templateclass stack_node
; stack_node(t a):value(a),next(null){};
~stack_node(){};
private:
t value;
stack_node *next;
};templateclass my_stack:public stack_node;
~my_stack(){};
my_stack(t a)
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;
};templatebool my_stack::is_empty(my_stack*a)
templatet my_stack::gettop(my_stack*a)
}templatevoid my_stack::stack_push(my_stack*a,t b)
templatet my_stack::stack_pop(my_stack*a)
else }
templateint my_stack::stacklenth(my_stack* a)
templatemy_stack* my_stack::stackclear(my_stack* a)
a=head;
a->top=null;
a->len=0;
return head;
}templatevoid my_stack::stackdestroy(my_stack* a)
delete head->top;
delete head;
}#endif
測試**如下:
#include "data_structure_stack.h"
int main()
資料結構模板 棧
此部落格是存的是我自己編寫的棧模板,如有錯誤請指出棧是操作受限的線性表,只允許在棧頂進行插入和刪除操作,遵循 後進先出 原則。include include define elemtype int define maxsize 1000 using namespace std 這是順序棧的模板 ty...
資料結構模板 佇列
此部落格是存的是我自己編寫的佇列模板,如有錯誤請指出佇列是操作受限的線性表,只允許在隊頭進行刪除操作,在隊尾進行插入操作,遵循 先進先出 原則。順序隊 存在假溢位問題 include include define elemtype int define maxsize 1000 using name...
資料結構模板合集
線段樹lazy操作模板 區間修改,區間查詢 class segment tree lazy inline void add int p,int v,int t inline void pushdown int p,int l,int r public inline void build tree i...