【发布时间】:2026-02-16 20:10:01
【问题描述】:
我正在尝试实现一个包含多个较小堆栈的堆栈程序。比如:-
|..|
|..|
|..| |..| |..| |..|
|..| = |..| + |..| + |..|
|..|
|..|
换句话说,假设我希望实现一个大小为 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 ;
如果您能解决错误,请提前感谢。
以下是错误详情 -
【问题讨论】:
-
那么,什么是“致命错误?”
-
当编写代码并且编译器错误地将其与某些父函数或括号相关联时。示例:- 如果您正在编写 if else if(x>y) x++;是++;否则{ y++;这将提示一个致命错误,否则它不属于任何 if
-
尝试在类中说
int size;,然后添加一个将其设置为0的构造函数。 -
@nabia 我已经用程序错误的快照更新了问题。在问题中查看。
-
你不能在类定义中初始化这个数据成员(C++11之前)-*.com/questions/15451840/…
标签: c++ pointers linked-list stack