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

疑点 帮忙解答C++

2012-10-21 
疑问帮忙解答C++#include iostreamusing namespace stdclass node{public:int datenode *next}class

疑问 帮忙解答C++
#include <iostream>

using namespace std;

class node
{
public:
  int date;
  node *next;
};

class Stack
{
private:
  node *top;
public:
  Stack();
  ~Stack();
  void Push(int Date);
  int Pop();
};

Stack::Stack()
{
  top=NULL;//初始化 top为空时,top这结点存在吗??
}

Stack::~Stack()
{
  node *p;
 while(top!=NULL)
  {
  p=top;
  top=top->next;//把上面第二个数据变为第一个 为什么是top=top->next top->next的意思不是指top后面的地址?? 而top已是最上面的数据了 它的上面应该没有了  
  delete p;
  } 
}

void Stack::Push(int Date)
{
  node *n=new node();
  n->date=Date;
  n->next=top;//???什么意思
top=n;//????
}

int Stack::Pop()
{
  int temp;
  if(top==NULL)
  {
  cerr<<"栈为空"<<endl;
return NULL;
  }
  else{
  temp =top->date;
  top=top->next;
  return temp;
  }
}

int main()
{
  Stack stack;
  for(int i=0;i<5;i++)
  {
  stack.Push(i);
  cout<<i<<"\t";
  }
  cout<<endl;
  for(int j=0;j<5;j++)
  {
  cout<<stack.Pop()<<"\t";
  }
  return 0;
}  
   


[解决办法]
我觉得楼主应该 先要弄清楚 栈的原理 
栈是先进后出的 后进先出的
压入的值存放在栈顶就是top
最开始栈为空 所以top=NULL;
当压入新值时 值放在栈顶
node *n=new node(); 
n->date=Date; 
n->next=top;//原栈顶位置被新值取代 旧栈顶值变成存放在栈顶的下一个位置
top=n;//新值在栈顶
-----------------------
 p=top; 
top=top->next; 后入先出原则,从栈顶弹出值 栈顶下一位置变成了新栈顶 
delete p; 
------------------

[解决办法]
每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分

[解决办法]
首先node存不存在是看你有没有开辟内存来存放它。如:top=new node();
其次top=top->next的意思是top存放接下来的node的地址,这只是一种结构。top是栈头,那么它下面必然有其他节点。否则只有一个元素。
最后n->next=top;的意思是新生成一个节点,并将它与栈顶元素相连。这样就能形成一个完整的栈。top=n;的意思是为了确保top始终为栈顶元素。
[解决办法]
top=null//指针的初始化,不指向任何值
n->next=top;
top=n;
当第一个值压栈的时候,n->next被赋予的top地址为null也就是没有值(出栈的时候通过null判断是否到栈底来结束出栈),然后top=n的意思是压入的这个第一个值作为最上面的top值
当第二个值压栈的时候,n->next被赋予的top地址为第一个值的地址,top=n的意思也就是把第二个值作为最上面的top值

热点排行