我正在尝试实现一个包含多个较小堆栈的堆栈程序。例如: -
| .. |
| .. |
| .. | | .. | | .. | | .. |
| .. | = | .. | + | .. | + | .. |
| .. |
| .. |
用语言假设我希望实现一个1000的堆栈。我将使用10个大小为100的堆栈。
就像我有一个固定大小的堆栈一样,如果需要一个更大的堆栈,就会创建另一个更小的堆栈。
我写了以下代码 -
#include<iostream>
#define MAX 2
using namespace std;
class Node{
int data;
Node *next;
Node(int d){
data = d;
next = NULL;
}
};
Node *n = NULL;
class multiStack{
public:
Node *head;
int size = 0;
void push(int d){
if(size < MAX){
if( head == NULL){
head = new Node(d);
}else{
Node *p = new Node(d);
p->next = head;
head = p;
}
n = head;
size++;
}else{
multiStack Sprime;
Sprime.head->next = n;
Sprime.push(d);
}
}
void print(){
Node *p;
p = n;
while (p!=null){
cout<<p->data<<" ";
p = p->next;
}
}
};
int main(){
multiStack s;
s.push(2);
s.push(1);
s.push(4);
s.print();
return 0;
}
codepad.org的编译器发出“由于-Wfatal-errors导致的编译终止错误” 在以下代码行 -
int size = 0 ;
提前完成Thanx如果你能解决错误。
以下是错误详情 -
答案 0 :(得分:0)
您在C ++ 11中所做的事情是可能的,但不是早期版本。如果您的编译器支持它,您可以将-Wc++11-extensions
添加到编译标志。
否则,按@cHao所述,并在构造函数或构造函数初始化列表中将值初始化为0
。
class multiStack{
public:
Node *head;
int size;
multiStack() : head(0), size(0) { }
// the rest of your class
};
您还需要初始化我在上面显示的head
。