堆棧使用int MaxSize = 3進行初始化。然後我將一個int推入列表中。 「推送:」返回到控制檯。程序在這裏崩潰。我認爲我的邏輯有缺陷,但不確定。也許是一個無限循環或未滿足的條件?謝謝你的幫助。鏈接列表push()
我想遍歷列表中full()方法的第二部分的最後一個節點。我以數組爲基礎實現了這個堆棧,所以必須實現此方法full(),因爲此方法位於主類中。
while(!stacker.full()) {
cout << "Enter number = ";
cin >> intIn;
stacker.push(intIn);
cout << "Pushed: " << intIn << endl;
}//while
調用LinkListStack.cpp到類LinkList full()。
int LinkList::full() {
if(head == NULL) {
top = 0;
} else {
LinkNode * tmp1;
LinkNode * tmp2;
tmp1 = head;
while(top != MaxSize) {
if(tmp1->next != NULL){
tmp2 = tmp1->next;
tmp1 = tmp2;
++top;
}//if
}//while
}//else
return (top + 1 == MaxSize);
}
推法在這裏:
void LinkList::push(int numIn) {
LinkNode * nodeIn = new LinkNode(numIn);
if(head == NULL) {
head = nodeIn;
}else {
nodeIn = head;
head = nodeIn;
}
}
爲什麼不在C++中使用Stack類? – zsong 2010-04-26 01:11:52
'top'好像是LinkList的數據成員。但它的目的是什麼?您只需在其他分支中增加它,而不將它設置爲0.爲什麼不記得實際大小並避免遍歷列表?你應該做一個'full'作爲'const'成員函數。我不認爲'full'是真的應該改變你的名單。另外,'tmp2'沒用。你可以寫下'tmp1 = tmp1-> next'。 – sellibitze 2010-04-26 01:12:33
你的「推」方法是怎樣的?它顯然是你的代碼的問題之一。 – 2010-04-26 01:20:16