数据结构重现之一 ----------栈

栈的实现比较简单一点,主要是考虑先进后出就可以了。

 

#ifndef _STACK_

#define _STACK_

#include <iostream>


using namespace std;

template <typename  T>
class Node{
public:  T  m_data;
   Node<T> *next;
   Node(const T data)  : m_data(data),next(NULL){}
   Node(void) { next=NULL; }
   ~Node(){}    
   bool operator >(Node<T> it){
    if (this->m_data > it.m_data)
        return true;
    else
     return false;
   }
};

 

template <typename T>
class myStack{
private:
   int m_count;
   Node<T> *m_top;

public:
 myStack():m_count(0),m_top(NULL){}
 ~myStack(){}
 T getTop();
 void Push(T e);
 T Pop();
 bool isEmpty();
 void  clear();
 void Print();
};

 

#endif

template <typename T>
T myStack<T>::getTop()
{
 if (NULL!=m_top)
 {
   return m_top->m_data;
 }
}


template <typename T>
void myStack<T>::Push( T e )
{
 Node<T> *tmp=new Node<T>;
 tmp->m_data=e;
 tmp->next=m_top;
 m_top=tmp;
}

template <typename T>
T myStack<T>::Pop()
{
 if (NULL!=m_top)
 {
  T e=m_top->m_data;
  Node<T> *tmp=m_top;
  m_top=tmp->next;
  tmp->next=NULL;
  delete tmp;
  return e;
 }
 
}

template <typename T>
bool myStack<T>::isEmpty()
{
 return NULL==m_top;
}

template <typename T>
void myStack<T>::clear()
{
 Node<T> *tmp=m_top;
 while(m_top){
      m_top=tmp->next;
   tmp->next=NULL;
   delete tmp;
   tmp=m_top;
 }
}

template <typename T>
void myStack<T>::Print()
{
 Node<T> *tmp=m_top;
 while (NULL!=tmp)
 {
  cout<<tmp->m_data<<"\t";
  tmp=tmp->next;
 }
 cout<<endl;
}

 

 

void main()

{

myStack<int> *stk=new myStack<int>();
 stk->Push(9);
 stk->Push(32);
 stk->Push(23);
 stk->Print();

 int m=stk->Pop();
 cout<<"After pop:";
 stk->Print();

 bool flag=stk->isEmpty();
 cout<<flag;

 stk->clear();
 stk->Print();

getchar();

return;

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值