C语言数据结构顺序栈的实现-创新互联

一.定义:栈是允许在同一端进行插入和删除操作的特殊线性表。

创新互联建站主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、成都响应式网站建设、程序开发、网站优化、微网站、成都微信小程序等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的网站制作、成都网站设计、网站设计、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体。

允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom)

栈底固定,而栈顶浮动;

栈中元素个数为零时称为空栈

二.原理:后进先出

三.栈的基本操作

(1)SETNULL(s){置空栈}:将栈S置成空栈

(2)EMPTY(s){判空栈}:这是一个布尔函。若栈S为空栈,则返回值“真”,否则返回值“假”

(3)PUSH(s,x){进栈}:在栈S的顶部插入(亦称压入)元素x

(4)POP(s){出栈}:若栈S不空,则删除(亦称弹出)顶部元素

(5)POP(s){出栈顶}:取栈顶元素,并不改变栈中内容

四.栈的C语言实现

以下文件存为Seqstack.h

#include#define StackSize 100
typedef int DataType;
typedef struct
{
    DataType stack[StackSize];
    int top;
}SeqStack;

void InitStack(SeqStack *s)
{
    s->top=0;
}
int StackEmpty(SeqStack s)
{
    if(s.top==0)
        return 1;
    else
        return 0;
}
int GetTop(SeqStack s,DataType *e)
{
    if(s.top<=0)
    {
        printf("栈已空");
        return 0;
    }
    else
        *e=s.stack[s.top-1];
    return 1;
}
int PushStack(SeqStack *s,DataType e)
{
    if(s->top==StackSize)
        {
            printf("栈已满,无法进栈");
            return 0;
        }
    else
    {
        s->stack[s->top]=e;
        s->top++;
        return 1;
    }
}
int PopStack(SeqStack *s,DataType *e)
{
    if(s->top==0)
    {
        printf("栈已空,不能出栈");
        return 0;
    }
    else
    {
        s->top--;
        *e=s->stack[s->top];
        return 1;
    }
}
int StackLength(SeqStack *s)
{
    return s->top;
}
void ClearStack(SeqStack *s)
{
    s->top=0;
}

   

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站栏目:C语言数据结构顺序栈的实现-创新互联
分享地址:http://azwzsj.com/article/djpgdd.html