嘿,所有!我的堆棧有點麻煩。我試圖打印我推入堆棧的每個元素。C++堆棧實現
從堆棧開始我們知道我們有一個固定的數組大小。所以我分配的項目結構對象持有隻是多少空間:
stack::stack(int capacity)
{
items = new item[capacity];
if (items == NULL) {
throw "Cannot Allocoate Sufficient Memmory";
exit(1);
}
maxSize = capacity;
top = -1;
}
是,項目是對象「項」的結構類型。看一看:
class stack
{
stack(int capacity);
~stack(void);
...
private:
int maxSize; // is for the item stack
int top; // is the top of the stack
struct item {
int n;
};
item *items;
public:
friend ostream& operator<<(ostream& out, stack& q)
...
第一和formost我們想通過每個傳入元素推入陣FILO添加到堆棧:
bool stack::pushFront(const int n)
{
if (top >= maxSize-1)
{
throw "Stack Full On Push";
return false;
}
else
{
++top;
items[top].n = n;
}
return true;
}
// just a textbook example here:
stack::~stack(void)
{
delete [] items;
items = NULL;
maxSize = 0;
top = -1;
}
是對我來說,真正的問題是項目[++頂部] .n = n;聲明。我一直在試圖找出如何將(+)items數組拖放到堆棧中以查看所有數組元素。
我想知道爲什麼我不能拖動那些項目[++ top] .n = n語句在調試時出現。所有出現的是作爲'n'參數傳遞的值。我是否需要使用堆棧對象類型數組將值存儲到?
當我重載< <運營商和嘗試打印,我得到一個瘋狂的大負數的元素:
ostream& operator<<(ostream& out, stack& q)
{
if (q.top <= 0) // bad check for empty or full node
out << endl << "stack: empty" << endl << endl;
else
for (int x = 0; x < q.maxSize; x++)
{
out << q.items[x].n; // try to print elements
}
return out;
}
我的路要走,我需要一些指導做好,如果任何人有足夠的時間!
你想查看調試器中的項目?您正在使用哪種編輯器? – Naveen 2009-09-10 05:37:00
不要在SO上使用pre標籤,而是使用代碼縮進按鈕;看到我最後的編輯。 – 2009-09-10 05:38:34
什麼樣的操作是「拖出來」? – 2009-09-10 05:41:47