栈的代码实现

栈的定义:

栈(stack)是限定仅在表尾进行插入或删除操作的线性表。因此,对栈来说,表尾端有特殊的含义,称为栈顶(top),相应地,表头端称为栈底(boottom)。不含元素的空表为空栈。

代码:

#include <bits/stdc++.h>
using namespace std;
#define MAXSIZE 100;//栈的大小 
typedef struct{
    int *base;//栈底指针
    int *top;//栈顶指针
    int  stacksize;//栈可用的空间 
}Stack;
int InitStack(Stack &s)//栈的初始化 
{
  s.base = new int[MAXSIZE];//将栈底分配内存空间 
  if(!s.base) exit(0);//分配失败 退出 
  s.top = s.base;//空栈 
  s.stacksize = MAXSIZE;//记录栈的大小 
  return 1;    
} 

int push(Stack &s,int e)//入栈 
{
    if(s.top - s.base == s.stacksize)//栈满 
    return 0;//退出 
    *s.top++ = e;//将e的值放在栈顶,栈顶指针加一 
    return 1;
}
int Pop(Stack &s,int &e){//出栈 
   if(s.top == s.base) return 0;//栈空,退出 
   e = * --s.top;//栈顶元素放在e里,栈顶指针减一 
   return 1; 
} 
int GetTop(Stack s){//返回栈顶元素 
    if(s.top != s.base){//栈不为空 
        return *(s.top - 1);//返回栈顶元素的值, 
    }
} 
int main(int argc, char *argv[])
{
    Stack a;
    InitStack(a);
    int ans = 0;
    cout<<"输入5个值,入栈:"<<endl; 
    for(int i = 0;i < 5;i++){
        int e;
        cin>>e;
        push(a,e);
    }
    for(int i = 0;i < 5;i++)
    {
        int e;
        GetTop(a);
        ans ++;
        printf("第%d次出栈",ans);
        Pop(a,e); 
        cout<<"出栈值:";
        cout<<e<<endl;
    }
    return 0;
}

 

-------------------------------------------

个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

posted @ 2020-09-17 19:19  比尔的歌  阅读(214)  评论(0)    收藏  举报