我在使用链表实现堆栈时遇到问题。在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
,并且会产生您所经历的运行时错误。