2.1链式栈

来源:互联网 发布:淘宝旺铺智能版好用吗? 编辑:程序博客网 时间:2024/06/10 00:46
#include<iostream>using namespace std;//结点结构typedef struct node{int data;struct node *next;}StackNode,*PStackNode;//栈typedef struct {PStackNode top;}LinkStack,*PLinkStack;//初始化栈PLinkStack Init_LinkStack(void){PLinkStack S;S=(PLinkStack)malloc(sizeof(LinkStack));if(S){S->top=NULL;}return S;}//判断栈空(是否有元素)int Empty_LinkStack(PLinkStack S){return (S->top==NULL);}//入栈(在栈顶插入元素)int Push_LinkStack(PLinkStack S,int x){PStackNode p;p=(PStackNode)malloc(sizeof(StackNode));if(!p){cout<<"内存溢出";return 0;}p->data=x;p->next=S->top;S->top=p;return 1;}//出栈(删除顶部元素)int Pop_LinkStack(PLinkStack S,int *x){PStackNode p;if(Empty_LinkStack(S)){cout<<"栈空,不能出栈";    return 0;}*x=S->top->data;p=S->top;S->top=S->top->next;free(p);return 1;}//取栈顶元素(不删除)int GetTop_LinkStack(PLinkStack S,int *x){if(Empty_LinkStack(S)){cout<<"栈空";    return 0;}*x=S->top->data;return 1;} //销毁栈void Destroy_LinkStack(PLinkStack *LS){    PStackNode p,q;if(*LS){p=(*LS)->top;while(p){q=p;p=p->next;free(q);}free(*LS);}*LS=NULL;return ;}int main(){PLinkStack S;S=Init_LinkStack();    Destroy_LinkStack(&S);return 0;}

0 0
原创粉丝点击