C++ 从堆栈中删除数字?

C++ 从堆栈中删除数字?,c++,class,linked-list,stack,C++,Class,Linked List,Stack,这是我的代码,问题是,当我弹出最后一个数字并试图打印列表时,它进入无限循环并打印垃圾。当我在删除列表中的所有内容后按delete(删除)选项时,程序将冻结。有什么建议可以解释为什么会出现这种情况?我该如何修复它?堆栈将遵循后进先出策略。您可以删除/弹出最后一个推送到堆栈中的数字。要做到这一点,你的爸爸必须是这样的: stack_class::stack_class() { head=NULL; } int stack_class::popNumber(){ 堆栈结构*pointerPo

这是我的代码,问题是,当我弹出最后一个数字并试图打印列表时,它进入无限循环并打印垃圾。当我在删除列表中的所有内容后按delete(删除)选项时,程序将冻结。有什么建议可以解释为什么会出现这种情况?我该如何修复它?

堆栈将遵循后进先出策略。您可以删除/弹出最后一个推送到堆栈中的数字。要做到这一点,你的爸爸必须是这样的:

stack_class::stack_class()
{
    head=NULL;
}
int stack_class::popNumber(){
堆栈结构*pointerPop=NULL;//,*pointerPop2=NULL;//不需要
int number;//数字poped
//int-popCounter=0,i=0;
//pointerPop2=尾指针;
if(head==NULL)
{

标准::cout@Chad仅当重复的问题有答案时,才应标记为重复。
stack_class::stack_class()
{
    head=NULL;
}
int stack_class::popNumber(){
stack_struct *pointerPop=NULL; //,*pointerPop2=NULL; //not needed
int number; //number poped
//int popCounter=0,i=0;
//pointerPop2=tailPointer;
if(head==NULL)
{
    std::cout<<"\nNo Member to POP.\n";
}
else
{
    pointerPop = head;
    number = head->number;
    delete head;
    head = pointerPop;
    return number;//control ended

    //[[this part is not neccessary
    while(pointerPop2)
    {
        popCounter++;
        //std::cout<<pointerFunc3->number<<std::endl;
        pointerPop2=pointerPop2->next_number;
    }
    pointerPop=tailPointer;
    while(i<(popCounter-2))
    {
        pointerPop=pointerPop->next_number;
        i++;
    }
    pointerPop->next_number=NULL;
    delete head;
    head=pointerPop;
    //]]
}
}


void stack_class::printStack(){
stack_struct *pointer = head;
if(head == NULL)
{
    std::cout<<"\nNo Members in List.\n";
}
else
{
    std::cout<<"\n\nList Is:\n";
    while(pointer)
    {
        std::cout<<pointer->number<<std::endl;
        pointer=pointer->next_number;
    }
}}