顺序栈的基本操作

来源:互联网 发布:淘宝卖家怎么查看投诉 编辑:程序博客网 时间:2024/05/29 03:22
#include <iostream>#include <stdlib.h>#define space 20using namespace std;typedef struct stack{    int* base;//数组    int top;    int stacksize;//长度}qstack;void init(qstack &s,int size){    s.base=(int*)malloc(size*sizeof(int));    if(s.base==NULL)    {        return;    }    s.stacksize=size;    s.top=0;//栈顶指针指向下标为0的位置}void empty(qstack &s){    if(s.top==0)    {        cout<<"empty";    }    else    {        cout<<"no";    }}void clear(qstack &s)//讲顺序栈内存清空{    s.top=0;}int lengh(qstack &s)//求顺序栈长度{    return s.top;}void push(qstack &s,int e)//入栈{    int *new_;    if(s.top==s.stacksize)//如果不够扩充内存    {        new_=(int*)realloc(s.base,(s.stacksize+space)*sizeof(int));        s.base=new_;        s.stacksize=s.stacksize+space;    }    s.base[s.top]=e;//将e付给base[top];    s.top++;}void pop(qstack &s,int &e)//出栈{    if(s.top==0)        return;    s.top--;    e=s.base[s.top];}void get(qstack &s,int &e)//得到栈顶元素{    if(s.top==0)    {        return;    }    s.top--;    e=s.base[s.top];    }void traverse(qstack &s)//例遍{    while(s.top>0)    {        s.top--;        cout<<s.base[s.top];    }}int main(){    qstack s;    init(s,10);    push(s,1);    push(s,2);    push(s,3);    traverse(s);    int e=0;    pop(s,e);    cout<<e;    return 0;}

0 0
原创粉丝点击