在C++中使用链表的堆栈实现中,访问结构体headNode成员count和top会导致运行时错误
In this implementation of stack using linked list in C++, accessing struct headNode members count and top is giving run time error
我在使用链表实现堆栈时遇到问题。在c++中使用链表的堆栈实现中,方法createNode和push中的struct-headNode部分计数和top不可访问,并给出运行时错误。请告诉我为什么结构体headNode->top和headNode->count不可访问,或者如果您在这段代码中发现任何其他错误。
struct Node{
int data;
Node *next;
Node(int data):data(data), next(NULL){}
};
struct headNode{
int count{0};
Node *top ;
headNode():top(NULL){}
};
class Stack{
private:
headNode *head;
int c{0};
public:
Stack();
void createStack(int data);
void push(int data);
};
Stack::Stack():head(NULL){}
void Stack:: createStack(int data)
{
Node *topNode= new Node(data);
head->top=topNode; //RUNTIME ERROR IN THIS LINE OF CODE
head->count=c++; //RUNTIME ERROR IN THIS LINE OF CODE
}
void Stack:: push(int data)
{
if(head==NULL)
{
createStack(data);
}
else
{
Node *topNode= new Node(data);
topNode->next=head->top;
head->top=topNode;
head->count=c++;
}
}
int main()
{
Stack s ;
s.push(1);
}
当执行Stack s;
时,构造函数会执行,但这一行:Stack::Stack():head(NULL)
初始化head = NULL
,然后在s.push(1);
行中,函数push
调用createStack
(因为条件head == NULL
为true(,这反过来会:
head->top=topNode;
head->count=c++;
但是head
仍然是NULL
,并且会产生您所经历的运行时错误。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 助记符和指向成员语法的指针
- 用于访问容器<T>数据成员的正确 API
- 内置函数可查看CPP中的成员变量
- 是否可以初始化不可复制类型的成员变量(或基类)
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 嵌套在类中时无法设置成员数据
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 将函数类成员映射到类本身内部
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- 在C++中使用链表的堆栈实现中,访问结构体headNode成员count和top会导致运行时错误
- 访问可能不存在的const vector成员- try/catch或if (count != 0)
- 将bitset成员函数count的输出放入vector很慢
- 为什么没有给 std::forward_list 一个 count() 成员函数?