1.4栈的链表储存[线性结构]

  • 栈的链式存储结构实际上就是一个单链表,叫做链栈。插入和删除操作只能在链栈的栈顶进行。




主要操作的实现:

#include <iostream>
#include <algorithm>
using namespace std;
// 1.4栈的链表储存[线性结构]

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

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


// 初始化
Stack CreateStack()
{
    Stack S = new struct SNode;
    Stack Next = NULL;
    return S;
}

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

// 入栈
void Push(Stack S, ElementType item)
{
    Stack temp = new struct SNode;
    temp->Data = item;
    temp->Next = S->Next;
    S->Next = temp;
}

// 出栈
ElementType Pop(Stack S)
{
    Stack First = S->Next;
    ElementType TopVal;
    if(IsEmpty(S))
    {
        cout << "IsEmpty !" << endl;
        return 0;
    }
    else
    {
        TopVal = First->Data;
        S->Next = First->Next;
        delete First;
        return TopVal;
    }
}