1.3栈的顺序储存[线性结构]

  • 栈的顺序存储结构通常由一个一维数组和一个记录栈顶元素位置的变量组成




主要操作的实现:

#include <iostream>
#include <algorithm>
using namespace std;
// 1.3栈的顺序储存[线性结构]

#define MAXSIZE 100   // 堆栈元素的最大个数
typedef int ElementType; // ElementType 暂时定义为 int 类型 
typedef struct SNode *Stack;
struct SNode{
    ElementType Data[MAXSIZE];   // 存储堆栈元素
    int Top;  // 记录栈顶元素下标 
}; 

Stack CreateStack();  // 初始化堆栈 
int IsFull(Stack S); // 判断堆栈是否已满 
int IsEmpty(Stack S);   // 判断堆栈是否为空 
void Push(Stack S,ElementType item);   // 入栈 
ElementType Pop(Stack S);   // 出栈


// 初始化堆栈
Stack CreateStack()
{
    Stack S = new struct SNode;
    S->Top = -1;
    return S;
}

// 是否已满
int IsFull(Stack S)
{
    return (S->Top == MAXSIZE-1);
}

// 是否为空
int IsEmpty(Stack S)
{
    return (S->Top == -1);
}

// 入栈
void Push(Stack S, ElementType item)
{
    if(IsFull(S))
    {
        cout << "IsFull !" << endl;
        return;
    }
    else
    {
        S->Top++;
        S->Data[S->Top] = item;
        return;
    }
}

// 出栈
ElementType Pop(Stack S)
{
    if(IsEmpty(S))
    {
        cout << "IsEmpty !" << endl;
        return 0;
    }
    else
    {
        ElementType val = S->Data[S->Top];
        S->Top--;
        return val;
    }
}