当前位置: 代码迷 >> C++ >> c++数据结构的有关问题,跪求大神指点
  详细解决方案

c++数据结构的有关问题,跪求大神指点

热度:5188   发布时间:2013-02-26 00:00:00.0
c++数据结构的问题,跪求大神指点
#include<iostream>
using namespace std;
#define max 20
class node{
public:
int data;
node *lchild;
node *rchild;
};
class stack{
private:
node *array[max];
int top;
public:
stack(){top=0;}
void push(node *x);
void pop();
};
void stack::push(node *x){
if(top<20){
array[top]=x;
top++;
}
}
void stack::pop(){
node *p=new node;
p->data=array[top]->data;
cout<<p->data;
top--;
}
void main(){
node *p1=new node;
node *p2=new node;
stack s;
p1->data=6;
p1->lchild=p2;
p1->rchild=p2;
s.push(p1);
s.pop();
}
请问这段代码为什么不能运行啊?我的本意是让自定义类型的数据也能进栈,出栈
数据结构 c++

------解决方案--------------------------------------------------------
int top标识的是栈顶元素的下一个位置,弹出的时候该位置不合法。
作如下修正:

void stack::pop(){
//node *p=new node;
//p->data = array[--top]->data;
//cout<<p->data;
if (0 == top)
{
return;
}
cout << array[--top]->data;
}

------解决方案--------------------------------------------------------
单步调试和设断点调试是程序员必须掌握的技能之一。

------解决方案--------------------------------------------------------

void stack::pop(){
node *p=new node;
p->data=array[top]->data; //这里你的top是一个指向栈顶元素的上一个位置的,所以要改成array[--top]
cout<<p->data;
top--;
}

------解决方案--------------------------------------------------------
为什么不能运行,这个问题不如改为,运行时出了XX错误,有XX提示,
来得更高效
  相关解决方案