如何显示动态堆栈和队列中的所有元素(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++)