线性表堆栈的顺序储存C语言代码+详解注释

在这里插入图片描述

基本结构

第一种

struct SNode {
    ElementType *Data;
    Position Top;
    int MaxSize;
};
typedef struct SNode *Stack;

第二种

#define MAXSIZE 100
typedef struct Snode *stack;
struct Snode{
    ElementType Data[MAXSIZE];
    int top;//最顶上元素下标
};

初始化

第一种基本结构对应初始化

Stack CreateStack( int MaxSize )
{
    Stack S;
    S=(Stack)malloc(sizeof(Stack));// one stack
    S->Data=(ElementType*)malloc(sizeof(ElementType)*MaxSize);//一个栈有很多个数字
    S->MaxSize=MaxSize;
    S->Top=-1;
    return S;
}

第二种基本结构对应初始化

stack CreateStack()
{
    stack S;
    S=(stack)malloc(sizeof(stack));// one stack
    S->top=-1; 
    return S;
}

基本操作

1.入栈

void Push(stack ptrS,ElementType item)
{
    if(ptrS->top==MAXSIZE-1)
    {
        printf("堆栈满");
        return;
    }
    else{
        ptrS->top++;
        ptrS->Data[ptrS->top]=item;
        /*等价于
    ptrS->Data[++(ptrS->top)]=item;
    */
        return ;
    }
}

2.出栈

ElementType pop(stack ptrS)
{
    if(ptrS->top==-1)//栈空(若栈中有一个元素,则top为最顶上元素下标0)
    {
        printf("栈空");
        return ERROR;
    }
    else
    {
       return (ptrS->Data[ptrS->top]--);
       //等价于
      /*  int num;
        num=ptrS->Data[ptrS->top];
        ptrS->top--;
        return num;*/
    }
    
}
  

猜你喜欢

转载自blog.csdn.net/qq_45955041/article/details/106964177