简单写一下数组栈的实现和增删

 真的非常非常基础,甚至我都不会写指针的实现栈顶和栈基的表示

#include <stdio.h>

#include <stdlib.h>

#define MAXLENGTH 10

#define ERROR 1

#define PASS 1

#define OK 0

typedef struct Slist//本栈用整型数字来表示栈基和栈顶

{

    int list[MAXLENGTH];

    int top;//表示栈的顶层,不得大于MAXLENGTH+1,如果为-1,说明为空栈

}Slist,*Slistp;//定义两个名称,一个是直接表示栈,另一个则是表示指针指向栈的入口


 

int InitStack(Slistp *S){//用于新建一个空栈,由于传入的为栈的地址,所以在使用栈时必须先解引

    if (!(*S)) return ERROR;//如果新建空栈失败,返回ERROR

    (*S) =(Slistp) malloc(sizeof(Slist));//分配空间,将其实例化

    for(int i = 0;i<MAXLENGTH-1;i++){

        (*S)->list[i] = 0;

    }

    (*S)->top = -1;//堆栈空

}

int Push(Slistp *S,int insert){//用于在栈顶插入数据

    if ((*S)->top == (MAXLENGTH-1)){

        printf("栈满");

        return PASS;//检测为栈满

    }

    (*S)->top++;//栈顶上移一个单位

    int i = (*S)->top;

    (*S)->list[i] = insert;//加入新的数据

    return OK;

}

int Pop(Slistp *S){//用于删除栈顶数据,并返回删除的值

    if ((*S)->top == -1) return ERROR;//如果栈空,返回错误

    int i = (*S)->top;//获取栈顶位置

    (*S)->list[i] = 0;//将栈顶数据删除,并设置为零

    (*S)->top--;//栈顶下调一个单位

    return OK;

}

int ShowStack(Slistp *S){//用于输出栈内储存数据

    int i = 0;

    for(i = 0;i<MAXLENGTH-1;i++){

        printf("%d,",(*S)->list[i]);

    }

}

int main(){

    Slist S;

    InitStack(&S);

    Push(&S,1);

    Push(&S,2);

    Push(&S,3);

    Pop(&S);

    ShowStack(&S);

    system("pause");

}

 第一次写了这么多注释,写了好久,我好菜....干巴爹!

如有错误,恳请指正,感谢您的浏览ovo

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值