数据结构 栈 入栈 输出 出栈
#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;elsereturn 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;}}
结果

如果对你有帮助,请 点赞 支持一下