簡體   English   中英

C++ 中字符堆棧實現的問題?

[英]Issues with a char stack implementation in c++?

我想做一個字符堆棧實現,但我認為它有問題,因為當我嘗試將它用於我的其他函數時,它不起作用,庫堆棧不起作用。 你能幫忙找到一個問題嗎:

using namespace std;



Stack::Stack(int size)
{
    arr = new char[size];
    capacity = size;
    t = -1;
}

int Stack::size()
{
    return (t + 1);
}

Stack::~Stack()
{
    delete[] arr;
}

bool Stack::empty()
{
    return size()==0;   
}


void Stack::push(char x) 
{
    if (size()==capacity) {
        cout<<"Push  to full stack";
    arr[++t]=x;
    }
}


char Stack::pop() 
{
    if (empty()) {
        cout<<"Pop from empty  stack";
    --t;
    }
    return 0;
}
char Stack::top()
{
    if (!empty())
        return arr[t];
    else
        cout<<"Top of the stack is empty";
    return  0;
    
}

我想做一個字符堆棧實現,但我認為它有問題,因為當我嘗試將它用於我的其他函數時,它不起作用,庫堆棧不起作用。 你能幫忙找到一個問題嗎:提前謝謝你!

我認為您需要對pushpop功能進行一些更改才能使Stack正常工作

  • push ,你應該把arr[++t]=x; 如果當前大小小於其容量而不是相等,則在if語句外部而不是內部,因為您希望向arr添加值

  • pop ,你應該放arr[--t]; 如果堆棧不為空, ifif語句之外而不是在內部,因為您要刪除並返回數組中的最后一個值。 當它為空時,您應該考慮返回一個默認字符,例如空終止符\\0 您還應該使用arr[t--]而不是arr[--t]因為最后一個元素當前位於t所以您希望它在減少其值( t-- )之前評估arr[t]

void Stack::push(char x)
{
    if (size()==capacity) {
        cout<<"Push  to full stack";
        return;
    }
    arr[++t]=x;
}


char Stack::pop()
{
    if (empty()) {
        cout<<"Pop from empty  stack";
        return '\0';
    }
    return arr[t--];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM