编写一个程序,实现链栈的各种基本运算

来源:互联网 发布:java设计模式之禅 pdf 编辑:程序博客网 时间:2024/04/20 14:17

完成如下功能:

(1)初始化链栈s;

(2)判断链栈s是否非空;

(3)依次进链栈元素a,b,c,d,e;

(4)判断链栈s是否非空;

(5)输出链栈长度;

(6)输出从栈顶到栈底元素;

(7)输出出链栈序列;

(8)判断链栈s是否非空;

(9)释放链栈;



代码:

#include"iostream"#include"malloc.h"using namespace std;typedef struct linknode{char data;struct linknode * next;}LiStack;void InitStack(LiStack *& s){s=(LiStack *)malloc(sizeof(LiStack));s->next=NULL;}bool StackEmpty(LiStack *s){return(s->next==NULL);}void Push(LiStack *& s,char e){LiStack *p;p=(LiStack *)malloc(sizeof(LiStack));p->data=e;p->next=s->next;s->next=p;}int StackLength(LiStack *s){LiStack * p=s;int i=0;while(p->next!=NULL){i++;p=p->next;}return(i);}void  Get(LiStack *s){LiStack * p;p=(LiStack *)malloc(sizeof(LiStack));p=s->next;while(p->next!=NULL){cout << p->data << "  " ;p=p->next;}cout << p->data << endl;}void  Pop(LiStack *s){LiStack * p;p=(LiStack *)malloc(sizeof(LiStack));p=s->next;while(p->next!=NULL){cout << p->data << "  " ;p=p->next;}cout << p->data << endl;}void DestoryStack(LiStack *&s){LiStack * p=s,* q=s->next;while(q!=NULL){free(p);p=q;q=p->next;}free(p);}void main(){LiStack *s;InitStack(s);cout << StackEmpty(s) << endl;Push(s,'a');Push(s,'b');Push(s,'c');Push(s,'d');Push(s,'e');cout << StackEmpty(s) << endl;cout << StackLength(s) << endl;Get(s);Pop(s);cout << StackEmpty(s) << endl;DestoryStack(s);}