【数据结构】·【链式栈】

来源:互联网 发布:php的特点与优势 编辑:程序博客网 时间:2024/06/04 19:46
#include<iostream>#include<assert.h>using namespace std;template<class T>struct LinkNode{T data;LinkNode<T> * link;LinkNode(T& item,LinkNode<T> *ptr=NULL){data=item;link=ptr;}};template<class T>class LinkedStack{public:LinkNode<T> *top;LinkedStack():top(NULL){}~LinkedStack(){makeEmpty();}void Push(T& x);bool Pop(T& x);bool getTop(T& x);bool IsEmpty();int getSize();void makeEmpty();//friend ostream& operator<<(ostream& os,LinkedStack<T>& s);};template<class T>bool LinkedStack<T>::IsEmpty(){return (top==NULL)?true:false;}template<class T>void LinkedStack<T>::makeEmpty(){LinkNode<T> *p;while(top!=NULL){p=top;top=top->link;delete p;}}template<class T>void LinkedStack<T>::Push(T& x){top=new LinkNode<T>(x,top);assert(top!=NULL);}template<class T>bool LinkedStack<T>::Pop(T& x){if(IsEmpty()==true)return false;LinkNode<T> *p=top;top=top->link;x=p->data;delete p;return true;}template<class T>bool LinkedStack<T>::getTop(T& x){if(IsEmpty()==true)return false;x=top->data;return true;}template<class T>int LinkedStack<T>::getSize(){LinkNode<T> *p=top;int k=0;while(top!=NULL){top=top->link;k++;}return k-1;}/*template<class T>ostream& operator<<(ostream& os,LinkedStack<T>& s){os<<"栈中元素个数="<<s.getSize()<<endl;LinkNode<T> *p=s.top;int i=0;while(p!=NULL){os<<++i<<":"<<p->data<<endl;p=p->link;}}*/void main(){LinkedStack<char> link;int num;cout<<"输入数据个数:";cin>>num;char start=97;for(int i=0;i<num;i++){link.Push(start);start++;}for(int i=0;i<num;i++){link.Pop(start);cout<<start<<endl;}}

运行截图:

友元重载<<不懂为什么不行,知道的说下,谢谢。


0 0
原创粉丝点击