程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c++-C++鏈棧的實現實在不會寫,求大神幫忙。

c++-C++鏈棧的實現實在不會寫,求大神幫忙。

編輯:編程綜合問答
C++鏈棧的實現實在不會寫,求大神幫忙。

Description
請實現以下棧類的定義:

enum ErrorCode

{

     success,

     underflow,

     overflow

};

template

struct Node

{

     StackEntry data;

     Node *next;

};

template

class MyStack

{

public:

     MyStack();

     /*

               判斷棧是否為空,若為空則返回true,非空則返回false

      */

     bool empty() const;

     int size() const;

     /*

               出棧操作,若正常出棧則返回success,若棧內無元素則返回underflow

      */

     ErrorCode pop();

     /*

               獲取棧頂元素,若正常獲取到棧頂元素則返回success,若棧內無元素則返回underflow

               元素內容保存在引用參數item中

      */

     ErrorCode top(StackEntry &item) const;

     /*

               入棧操作,若正常入棧則返回success,若入棧失敗則返回overflow

      */

     ErrorCode push(const StackEntry &item);

     /*

               清空棧

      */

     void clear();

private:

     Node<StackEntry> *pTop;

};

注意,只需要提交類的聲明以及函數實現,不需要提交main函數。

Hint
注意,只需要提交類的聲明以及函數實現,不需要提交main函數。

最佳回答:


 enum ErrorCode
{
     success,

     underflow,

     overflow
};
template < typename StackEntry>
struct Node
{
     StackEntry data;

     Node *next;
};

template < typename StackEntry>
class MyStack
{
public:
     MyStack() : pTop(NULL){}

     /*

               判斷棧是否為空,若為空則返回true,非空則返回false

      */

     bool empty() const {return pTop == NULL;}

     int size() const
     {
         int size = 0;
         Node<StackEntry> * p = pTop;
         while(p)
         {
             ++size;
             p = p->next;
         }
         return size;
     }

     /*

               出棧操作,若正常出棧則返回success,若棧內無元素則返回underflow

      */

     ErrorCode pop()
     {
         if(empty())
         {
             return underflow;
         }
         Node<StackEntry> * p = pTop;
         pTop = pTop->next;
         delete p;
         return success;
     }

     /*

               獲取棧頂元素,若正常獲取到棧頂元素則返回success,若棧內無元素則返回underflow

               元素內容保存在引用參數item中

      */

     ErrorCode top(StackEntry &item) const
     {
         if(empty())
         {
             return underflow;
         }
         item = pTop->data;
         return success;
     }

     /*

               入棧操作,若正常入棧則返回success,若入棧失敗則返回overflow

      */

     ErrorCode push(const StackEntry &item)
     {
         Node<StackEntry> * p = new Node<StackEntry>();
         if(!p)
         {
             return overflow;
         }
         p->data = item;
         p->next = pTop;
         pTop = p;
         return success;
     }

     /*

               清空棧

      */

     void clear()
     {
         Node<StackEntry> * p = pTop;
         while(p)
         {
             Node<StackEntry> * q = p;
             p = p->next;
             delete q;
         }
         pTop = NULL;
     }
private:
     Node<StackEntry> *pTop;
};
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved