首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

刚上完链式栈课,凭着理解写了个入栈的代码,调试不运行,求指教

2013-10-22 
刚刚上完链式栈课,凭着理解写了个入栈的代码,调试不运行,求指教#include iostreamusing namespace stds

刚刚上完链式栈课,凭着理解写了个入栈的代码,调试不运行,求指教

#include <iostream>
using namespace std;
struct node
{
node *next;
int data;
};
class link
{
private:
node *head;
public:
link(){head=NULL;}
void push(int i);
void out();
};
void link::push(int i)
{
node *s;
s=new node;
s->data = i;
s->next=head->next;
head->next=s;
}

void link::out()
{
node *p;
p = head;
while(p->next==NULL)
{
p=p->next;
cout<<p->data<<endl;
}


void main()
{
link A;
A.push(1); 
    A.push(2);
A.push(3);
A.out();
}

[解决办法]
有几个点:
1.s->next=head->next;
  head->next=s;
  着两行代码用到了head->next,没有初始化的。构造函数里面你用的是指针,这里直接吧s 给head就好了。

2.  while(p->next==NULL)
    {
        p=p->next;
        cout<<p->data<<endl;
    }这里你是想实现pop操作吧?如果是等于NULL,这个循环一般情况下都进不去吧?进去了还往后移动一个就跟不对了吧?

3.out操作里面 是不是应该实现一个加个delete? 既然分配了内存,就应该有释放。

4.main函数最好不要用void,没有这样的写法。用int main,记得return

[解决办法]
除了上述问题外,最好加一个node的构造函数,把next初始化一下。

热点排行