欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

栈的顺序存储结构及实现

程序员文章站 2022-06-05 13:41:22
...

栈是线性表的特例,栈只在栈顶进行插入及删除操作,因此数据是后进先出。栈的顺序存储其实也是线性表顺序存储的简化。

栈的结构定义如下:

typedef int SElemType;
typedef Struct
{
    SElemType data[MAXSIZE];
    int top;  //栈顶指针

}SqStack;

栈的顺序存储结构及实现

进栈操作push,其代码如下:

/*插入元素e为新的栈顶元素*/
Stauts Push(SqStack *S, SElemType *e)
{
    if(S->top == MAXSIZE-1)  //栈满
      {
        return ERROR;
        }

    S->top++;              //栈顶指针+1
    S->data[S->top] = e;   //将新元素赋值给栈顶空间
    return OK;
}

出栈操作pop,其代码如下:

/*若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则,返回ERROR*/

Status Pop(SqStack *S, SElemType *e)
{
    if(S->top == -1)
        return ERROR;
    *e = S->data[S->top]; //将要删除的元素值赋值给e
    S->top--;            //栈顶指针-1
    return OK:
    
}

由于栈的顺序存储没有用到循环,因此时间复杂度均为O(1).

相关标签: 数据结构

上一篇: 电话号码的字母组合

下一篇: AOP