1. 程式人生 > 其它 >MongoDB入門實戰教程(8)

MongoDB入門實戰教程(8)

#include <iostream>
using namespace std;

#define MAXSIZE 100
struct Stack
{
    int* top;
    int* base;
    int stacksize;
};

//順序棧的初始化
bool initStack(Stack& s)
{
    s.base = new int[MAXSIZE];   //1.分配一個數組空間給棧底,棧底表示陣列的首地址。
    s.top = s.base;   //2.棧頂指向棧底
    s.stacksize = MAXSIZE;   //3.設定順序棧的大小
return true; } //判斷順序棧是否為空 bool isEmpty(Stack& s) { return s.top == s.base; } //獲取順序棧的長度 int getStackLength(Stack& s) { return s.top - s.base; } //清空順序棧 void clearStack(Stack& s) { if (s.base) s.top = s.base; } //銷燬順序棧 void destroyStack(Stack& s) { if (!s.base
)return; delete s.base; //棧底指標相當於陣列首地址 s.stacksize = 0; s.top = s.base = nullptr; } //順序棧的入棧 bool push(Stack& s, int value) { if (!s.base)return false; if (s.top - s.base == s.stacksize)return false; //1.判斷是否棧滿 *(s.top) = value; //2.將元素壓入棧頂 s.top++; //3.棧頂指標加1 return
true; } //順序棧的出棧 bool pop(Stack& s, int& value) { if (s.top == s.base)return false; //1.判斷是否棧空 s.top--; //2.棧頂下移 value = *(s.top); //3.取值返回 return true; } void main() { //棧不能遍歷,只能出棧。 Stack s; initStack(s); cout << "順序棧" << (isEmpty(s) ? "為空" : "不為空") << endl; cout << "順序棧入棧:" << endl; for (int i = 0; i < 10; i++) push(s, i); cout << "順序棧長度:" << getStackLength(s) << endl; int value = 0; pop(s, value); cout << "順序棧出棧:" << value << endl; clearStack(s); cout << "清空順序棧!" << endl; destroyStack(s); cout << "銷燬順序棧!" << endl; }