首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为什么小弟我编写的栈总是出现工作停止

2012-11-03 
为什么我编写的栈总是出现工作停止其源代码如下:#includeiostream#includestdlib.husing namespace st

为什么我编写的栈总是出现工作停止
其源代码如下:
#include<iostream>
#include<stdlib.h>
using namespace std;
struct Node
{
  int data;
  struct Node *next;
};
class LinkStack
{
  public:
  void intStack();
  void ClearStack();
  void Push(int d);//入栈
  int Pop();//出栈
  int GetTop();
  bool Empty();
  void Print();
  private:
  struct Node *top;
  int length;
};
void LinkStack::intStack()
{
  top = new Node;
  if(!top)
  {
  exit(1);
  }
  else
  {
  top->next = NULL;
  }
}
void LinkStack::ClearStack()
{
  if(top == NULL)
  {
  exit(1);
  }
  else
  {
  while(top->next != NULL)
  {
  struct Node *p;//工作指针
  p = top->next;
  top->next = p->next;
  delete p;
  }
  }
}
void LinkStack::Push(int d)
{
  struct Node *p;
  if(!p)
  {
  exit(1);
  }
  else
  {
  p->data = d;
  p->next = top->next;
  top->next = p;
  }
}
int LinkStack::Pop()
{
  if(Empty())
  {
  cout<<"False!"<<endl;
  }
  else
  {
  int x;
  struct Node *p;//工作指针
  p = top->next;
  top->next = p->next;
  x = p->data;
  delete p;
  return x;
  }
}
int LinkStack::GetTop()
{
  if(Empty())
  {
  cout<<"False!"<<endl;
  }
  else
  {
  return top->next->data;
  }
}
bool LinkStack::Empty()
{
  if(top == NULL)
  {
  exit(1);
  }
  else if(top->next == NULL)
  {
  return true;
  }
  else
  {
  return false;
  }
}
void LinkStack::Print()
{
  struct Node *p;//工作指针
  p = top->next;
  while(p != NULL)
  {
  cout<<p->data<<'\t';
  p = p->next;
  }
}
int main()
{
  int num;
  LinkStack S1;
  S1.intStack();
  while(1)
  {
  cin>>num;
  if(num == -1)
  {
  break;
  }
  S1.Push(num);
  }
  S1.Print();
  S1.ClearStack();
}
我已经看了好几遍了,总找不出问题,希望能有人指点

[解决办法]
单步调试
[解决办法]
学习调试是程序员的必经之路.
[解决办法]
void LinkStack::Push(int d)
{
struct Node *p; //这里只声明了一个指向node的指针,并没有申请内存.下面对其date赋值,必然导致崩溃
if(!p)
{
exit(1);
}
else
{
p->data = d;
p->next = top->next;
top->next = p;
}
}

热点排行