栈的代码实现
栈的定义:
栈(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; }
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

浙公网安备 33010602011771号