如何显示动态堆栈和队列中的所有元素(c ++)

我需要显示堆栈和队列的所有元素,使用静态结构我使用了递归函数,但是动态的它根本不起作用。

当我使用函数时,它会正确显示元素,但在此之后,无论我做什么,程序都会崩溃。

此外,为了执行print(),一个请求是它假设我只能访问顶端,所以如果我显示顶端,我不能看到前一个节点,除非我弹出当前顶端,然后显示新的顶端。

这是动态堆栈的代码:

class Person{
    public:
        string nombre,weight;
        Person *sig;
    public:
        void Capture();
        void Show();
};


typedef Person *pPerson;

class stack{
    public:
        pPerson top;
        void Push();
        void PushPtr(pPerson object);
        void Pop();
        pPerson Top();
        void Print();
};

//Push new elements
void stack::Push(){
    pPerson newP;
    newP=new Person();
    newP->Capture();
    if(top==NULL){
        newP->next=NULL;
        top=newP;
    }
    else{
        newP->next=top;
        top=newP;
    }
    size++;
}

//For print
void Stack::Print(){
    if(Empty()){
        return;
    }
    pPerson x=Top();
    Pop();
    Print();
    PushPtr(x);
 }

//Function to recieve the "x" pointer
void Stack::PushPtr(pPerson object){
    pPerson newP;

    newP=object;
    if(size==0){
        newP->next=NULL;
        top=newP;
    }
    else{
        newP->next=top;
        top=newP;
    }
    size++;
}

正如我所说,队列是做同样的事情,但搞清楚这里有什么问题,我很确定我会修正队列: - /

提前致谢。


堆栈走通常以这种方式完成:

void Stack::Print(){
  pPerson cur = top;

  while (cur != nullptr) {
    cur->printIt(); // other print function.
    cur = cur->next;
  }
}

除非有一些存在理由来弹出堆栈并重新启动它。

链接地址: http://www.djcxy.com/p/79867.html

上一篇: How to show all elements in dynamic stack and queue (c++)

下一篇: c++ Implementation of a combined queue/stack