初始化一个空堆栈

Initializing an empty Stack

本文关键字:一个 堆栈 初始化      更新时间:2023-10-16

我试图初始化大小为3的空堆栈,但我的程序不允许我将NULL放入甚至1个元素中。我不知道是什么问题。当程序试图初始化其中一个元素时,程序将停止工作。

Stack300::Stack300 ()
{
for (int i = 0; i < 3; i++)
{
    stackArray[i] = '';
    //stackArray[i] = i;
}
top = 0;
return;
}

我的。h文件。

#ifndef CONGERA2_H
#define CONGERA2_H
typedef float Element300;
class Stack300
{
public:
    Stack300 ();
    Stack300 (const int);
    Stack300 (Stack300 &old);
    ~Stack300();
    void push300(const Element300);
    Element300 pop300();
    void viewTB300();
    void viewBT300();
private:
    const int MAX_STACK = 80;
    Element300 * stackArray;
    int top;
};
#endif

和我的主文件

#include <iostream>
#include "congera2.h"
using namespace std;

int main()
{
Element300 temp1 = 1.1;
Element300 temp2 = 2.2;
Element300 temp3 = 3.3;
Stack300 myStack;
Stack300 myStack2 (myStack);
/* myStack.push300(temp1);
myStack.push300(temp2);
myStack.push300(temp3);*/
cout << "hello";

return 0;
}

在构造函数中,您永远不会为'stackArray'成员分配任何内存。下面这行代码将完成一个包含3个浮点整数的动态数组的初始化。

stackArray = new float[3];

你需要确保这些内存也在析构函数中被释放。

编辑,增加一些有用的资源;这些页面很好地解释了指针和动态内存分配背后的概念:指针,动态内存