数据结构 栈 入栈 输出 出栈
#include<bits/stdc++.h>
using namespace std;
typedef struct Node
{
int data;
struct Node * pNext;
}NODE,*PNODE;
typedef struct Stack
{
PNODE pTop;
PNODE pBottom;
} STACK,*PSTACK;
void init(PSTACK);
void push(PSTACK,int);
void traverse(PSTACK);
bool empty( PSTACK pS);
bool pop(PSTACK,int*);
int main()
{
int val;
STACK S;
init(&S);
push(&S,1);
push(&S,2);
push(&S,3);
traverse(&S);
if( pop(&S,&val))
{
cout<<"出栈成功,值是:"<<val;
}
else
{
cout<<"出栈失败"<<endl;
}
return 0;
}
void init(PSTACK ps)
{
ps->pTop = (PNODE)malloc(sizeof(NODE));
if( NULL==ps->pTop)
{
cout<<"动态内存分配失败"<<endl;
exit(-1);
}
else
{
ps->pBottom=ps->pTop;
ps->pBottom->pNext =NULL;
}
ps->pBottom;
}
void push(PSTACK pS,int val)
{
PNODE pNew=(PNODE)malloc(sizeof(NODE));
pNew->data=val;
pNew->pNext=pS->pTop;
pS->pTop=pNew;
return;
}
void traverse(PSTACK pS)
{
PNODE p= pS->pTop;
while ( p!=pS->pBottom )
{
cout<<p->data<<endl;
p=p->pNext;
}
return;
}
bool empty( PSTACK pS)
{
if( pS->pTop==pS->pBottom )
return true;
else
return false;
}
bool pop(PSTACK pS,int *pVal)
{
if( empty(pS ) )
return false;
else
{
PNODE r=pS->pTop;
*pVal=r->data;
pS->pTop=pS->pTop->pNext;
free(r);
r=NULL;
return true;
}
}
结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200516151622977.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoYW5neGlhbmppYW8=,size_16,color_FFFFFF,t_70)
如果对你有帮助,请 点赞 支持一下