首页 > 代码库 > 链表栈类模板
链表栈类模板
链表节点
ListNode.h
1 #include "stdafx.h" 2 #include<iostream> 3 using namespace std; 4 template <typename Type> class LinkStack; 5 template <typename Type> 6 // 链表节点 7 class ListNode{ 8 private: 9 friend class LinkStack<Type>;10 ListNode():p_next(NULL){}11 ListNode(Type item , ListNode<Type>*next=NULL):data(item),p_next(next){}12 ~ListNode(){13 p_next=NULL;14 }15 private:16 Type data; // 节点数据17 ListNode<Type>*p_next; //下一个节点18 };
栈节点
LinkNode.h
1 #include "ListNode.h" 2 template <typename Type> 3 class LinkStack{ 4 public: 5 LinkStack():p_top(NULL){} 6 ~LinkStack(){ 7 makeEmpty(); 8 } 9 public:10 void makeEmpty(); // 清空11 bool push(Type item); // 入栈12 Type pop(); // 出栈13 Type getTop(); // 获取栈首元素14 void print(); // 打印15 bool isEmpty(){ // 判空16 return p_top==NULL; 17 }18 private:19 ListNode<Type>*p_top;20 };21 template<typename Type>22 void LinkStack<Type>::makeEmpty(){23 ListNode<Type>*pdel;24 while(p_top!=NULL){25 pdel = p_top;26 p_top = p_top->p_next;27 delete pdel;28 }29 }30 template <typename Type>31 bool LinkStack<Type>::push(Type item){32 ListNode<Type>*temp = new ListNode<Type>(item);33 if(temp==NULL){34 cout << "filed push item:"<<item<<endl;35 return false;36 }37 temp->p_next = p_top;38 p_top = temp;39 return true;40 }41 template <typename Type>42 Type LinkStack<Type>::pop(){43 if(isEmpty()){44 cout << "stack is empty , can‘t pop the element"<<endl;45 exit(0);46 }47 ListNode<Type>*temp = p_top;48 p_top = p_top->p_next;49 Type item = temp->data;50 delete temp;51 return item;52 }53 54 template <typename Type>55 Type LinkStack<Type>::getTop(){56 if(isEmpty()){57 cout << "stack is empty"<<endl;58 exit(0);59 }60 return p_top->data;61 }62 template <typename Type>63 void LinkStack<Type>::print(){64 if(isEmpty()){65 cout << "stack is empty"<<endl;66 exit(0);67 }68 ListNode<Type>*pmove = p_top;69 cout << "stack";70 while(pmove!=NULL){71 cout << "->" << pmove->data;72 pmove = pmove->p_next;73 }74 cout << endl << endl;75 }
链表栈类模板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。