1. 程式人生 > 實用技巧 >棧的程式碼實現

棧的程式碼實現

棧的定義:

棧(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; }