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

链栈基本操作函数,运行到显示栈时就有有关问题了,但自己看了半天觉得不论是入栈函数还是显示函数都没有关问题,亲们帮忙看看,是哪儿错了

2013-10-31 
链栈基本操作函数,运行到显示栈时就有问题了,但自己看了半天觉得不论是入栈函数还是显示函数都没问题,亲们

链栈基本操作函数,运行到显示栈时就有问题了,但自己看了半天觉得不论是入栈函数还是显示函数都没问题,亲们帮忙看看,是哪儿错了啊

#include <iostream>

using namespace std;

typedef struct snode{
int data;
struct snode *next;
}LinkStack;

void InitStack(LinkStack *&s)
{
s = new LinkStack;
s->next = NULL;
}

int EmptyStack(LinkStack *s)
{
return(s->next == NULL);
}

void Push(LinkStack *&s, int e)//入栈
{
LinkStack *p;
p = new LinkStack;
p->data = e;
p->next = s->next;
p = s->next;
}

int GetTop(LinkStack *s, int &e)//取栈顶元素
{
if(EmptyStack(s))
{
return 0;
}
else
{
e = s->next->data;
return 1;
}
}

int Pop(LinkStack *s, int &e)//出栈
{
LinkStack *p;
if(EmptyStack(s))
{
return 0;
}
else
{
p = s->next;
e = p->data;
s->next = p->next;
delete(p);
return 1;
}
}

void DispStack(LinkStack *s)//显示栈中元素
{
LinkStack *p;
p = s->next;
while(p != NULL)
{
cout<<p->data<<"  ";
p = p->next;
}
}

void main()
{
LinkStack *s=NULL;
int n,i,x,y,z;
InitStack(s);

cout<<"How many Elements?"<<endl;   
cin>>n;
cout<<"Pleast input:"<<endl;
for(i=0;i<n;i++)
{
cin>>x;
Push(s, x);
}

DispStack(s);                         

y=GetTop(s,z);                        
if(!y)
  cout<<"Stack is empty!"<<endl;
else
  cout<<"top is :"<<z<<endl;

cout<<"Push what?"<<endl;             
cin>>x;
Push(s,x);
DispStack(s);                         
y=GetTop(s,z);                  
if(!y)
  cout<<"Stack is empty!"<<endl;
else
  cout<<"top is :"<<z<<endl;

cout<<"Pop......"<<endl;
y=Pop(s,z);                            
if(!y)
 cout<<"Stack is empty!"<<endl;
else
 cout<<z<<" is already pop!"<<endl;
DispStack(s);                          
y=GetTop(s,z);                        
if(!y)
  cout<<"Stack is empty!"<<endl;
else
  cout<<"top is :"<<z<<endl;
}
链栈? 数据结构
[解决办法]
void Push(LinkStack *&s, int e)//入栈
{
    LinkStack *p;
    p = new LinkStack;
    p->data = e;
    p->next = s->next;
    p = s->next;//这句反了吧,是s->next=p;吧
}

热点排行