C语言复习数据结构之数组实现栈操作

版权声明:转载请通知,复制请通知 如有兴趣欢迎加群:653460549 - Java资源分享 https://blog.csdn.net/qq_42038407/article/details/82730306

栈:先入后出理解为 == 吃多了 导致上吐 这个过程就是栈操作

本篇内容使用数组实现栈操作!请注意

1:函数声明:

#define _Data char

#define _MaxArray 100

typedef struct Struck{
    int pre;
    _Data valueArray[100];
}struck;

struck * createStruck();                //创建栈
_Data struckPop(struck * data);         //出栈
int getStruckSize(struck * data);       //获得栈大小
int isStruckEmpty(struck * data);       //判断栈是否为空
int isStruckFull(struck * data);        //判断栈是否为满
int struckPush(struck * data, _Data value);//入栈
int printAndDeleteData(struck * data);  //打印栈

2:函数实现

struck * createStruck(){
    struck * res = (struck *)malloc(sizeof(struck));
    res->pre = 0;
}

_Data struckPop(struck * data){
    if(isStruckEmpty(data)){
        return 0;
    }
    return data->valueArray[--data->pre];
};

int getStruckSize(struck * data){
    return data->pre + 1;
}

int isStruckEmpty(struck * data){
    return data->pre == 0;
}

int isStruckFull(struck * data){
    return data->pre == _MaxArray;
}

int struckPush(struck * data, _Data value){
    if(isStruckFull(data)){
        return 0;
    }

    data->valueArray[data->pre] = value;
    data->pre++;
}

int printAndDeleteData(struck * data){
    while(!isStruckEmpty(data)){
        printf("%c ", struckPop(data));
    }
}

3:测试函数

int main() {
    struck * s = createStruck();
    struckPush(s, 'A');
    struckPush(s, 'B');
    struckPush(s, 'c');
    struckPush(s, 'd');
    struckPush(s, 'E');

    printf("%d\n", isStruckEmpty(s));
    printf("%d\n", isStruckFull(s));
    printf("%d\n", getStruckSize(s));


    printAndDeleteData(s);
}

4:测试结果

猜你喜欢

转载自blog.csdn.net/qq_42038407/article/details/82730306