2015-04-21 70 views
0

我做了一個自定義的Stack和Queue類。在我的程序中,我想用它們來測試一個單詞或短語是否是迴文。但是,我需要在我的Stack和Queue類中進行更改,這將允許數字和字符串。我如何以簡單的方式解決這個問題?我閱讀了使用Palindromes時遇到問題的人,但這是與C++參考類相關的。有任何想法嗎?這是我的代碼與數字一起工作。棧和隊列以測試迴文

//Queue.h 

#include <iostream> 
using namespace std; 

class Queue 
{ 
public: 
    Queue(); 
    ~Queue(); 
    void enqueue(int); 
    int dequeue(); 
    void print(); 
private: 
    typedef struct Node { 
     Node *link_; 
     int item_; 
    } NODE; 
    NODE* head_; 
}; 

Queue::Queue() 
{ 
    head_ = NULL; 
} 

Queue::~Queue() 
{ 
    if (head_ == NULL) return; 
    NODE *cur = head_; 
    while (cur) { 
     Node *ptr = cur; 
     cur = cur->link_; 
     delete ptr; 
    } 
} 

void Queue::enqueue(int n) 
{ 
    if (head_ == NULL) { 
     head_ = new NODE; 
     head_->item_ = n; 
     head_->link_ = NULL; 
     return; 
    } 
    NODE *cur = head_; 
    while (cur) { 
     if (cur->link_ == NULL) { 
      NODE *ptr = new NODE; 
      ptr->item_ = n; 
      ptr->link_ = NULL; 
      cur->link_ = ptr; 
      return; 
     } 
     cur = cur->link_; 
    } 
} 

void Queue::print() 
{ 
    if (head_ == NULL) return; 
    Node *cur = head_; 
    cout << "This is your current queue: " << endl; 
    while (cur) { 
     cout << cur->item_ << " "; 
     cur = cur->link_; 
    } 
    cout << endl; 
} 

int Queue::dequeue() 
{ 
    if (head_ == NULL) { 
     cout << "This is an empty queue!!" << endl; 
     return NULL; 
    } 
    NODE *tmp = head_; 
    int value = head_->item_; 
    if (head_->link_) { 
     head_ = head_->link_; 
    } 
    // pop the last element (head) 
    else { 
     delete tmp; 
     head_ = NULL; 
    } 
    cout << "You dequeued: " << value << endl;; 
    return value; 
} 

int getQueue() 
{ 
    Queue *que = new Queue(); 
    que->enqueue(15); 
    que->enqueue(75); 
    que->enqueue(105); 
    que->enqueue(25); 
    que->enqueue(55); 
    que->print(); 
    que->dequeue(); que->print(); 
    que->dequeue(); que->print(); 
    que->dequeue(); que->print(); 
    que->dequeue(); que->print(); 
    que->dequeue(); que->print(); 
    que->dequeue(); que->print(); 
    return 0; 
} 

我真的很新的編碼C++,真的很想學習。如果任何人都可以幫助我,它將非常感激。

+0

我很困惑。你的問題是關於尋找回文,還是關於實現一個堆棧/隊列來存儲一個字符串? –

+0

我在問題中說過,我需要幫助,試圖改變它以允許整數和字符串 – Cooper

+0

啊,好的。你可以存儲一個字符串作爲一個字符列表(即:一個C風格的字符串)?如果這是可以接受的,你只需要將幾個「int」改爲「char」即可。 –

回答

1

做到這一點,最好的辦法是讓你的隊列類型模板

​​

現在你可以使用它作爲

Queue<int> intQueue; 
intQueue.enqueue(1); 
intQueue.enqueue(2); 
int i = intQueue.dequeue(); 

Queue<string> stringQueue; 
stringQueue.enqueue("hello"); 

Queue<char> charQueue; 
charQueue.enqueue('c');