用结构实现栈,函数压栈,弹栈,初始化,释放

来源:互联网 发布:上海餐饮软件 编辑:程序博客网 时间:2024/06/06 05:12

用结构实现栈,函数压栈,弹栈,初始化,释放

#include <iostream>using namespace std;struct stack{    int *data;  //栈数据存储,后面  把一维数组的地址给了data    int memnum;  //栈元素个数    int size;    //栈大小};//其实不用声明的,我按书上傻X的抄下来的int initstack(stack &s,int size);void delstack(stack &s);int popstack(stack &s,int &num);int pushstack(stack &s,int mem);//初始化栈 int initstack(stack &s,int size) {     s.data=new int [size];  //将一维数组的地址给了data     if(s.data==NULL)       return 0;     s.memnum=0;     s.size=size;     return 1; } //释放栈 void delstack(stack &s) {     delete[]s.data;   //就是释放指针 } //弹栈,无数据时返回0,否则返回1 int popstack(stack &s,int &num) {     if(s.memnum==0)     return 0;     num=s.data[--s.memnum];     return 1; } //压栈,成功返1,否则返0 int pushstack(stack &s,int mem) {     if(s.memnum==s.size)       return 0;       s.data[s.memnum++]=mem;       return 1; }int main(){    int i,num;    stack newstack;    initstack(newstack,10);    //压栈     cout<<"通过压栈函数将整数压入栈中"<<endl;     for(i=0;i<10;i++)     {         cout<<i<<" ";         pushstack(newstack,i);     }    cout<<endl;    //弹栈    for(i=0;i<10;i++)    {        if(popstack(newstack,num))         cout<<num<<" ";    }    cout<<endl<<endl;    //直接操作栈的内部数据,破坏性地使用栈    //直接将数据存入data    for(i=10;i<20;i++)    {        cout<<i<<" ";        newstack.data[newstack.memnum++]=i;    }    cout<<endl;   //直接从data中读取数据   cout<<"直接从data中读取数据:"<<endl;   for(i=0;i<10;i++)    {        cout<<newstack.data[i]<<" ";    }    cout<<endl;    //非法读取data ,造成越界    for(i=10;i<20;i++)       cout<<newstack.data[i]<<" ";       cout<<endl;       //释放栈        delstack(newstack);    return 0;}


 

原创粉丝点击