172 阅读1分钟

什么是栈?

栈是线性表的一种特殊存储结构,它只能从头的一端进行插入和删除,另一端是不能进行插入和删除。对栈结构的元素进行删除操作要遵循“先进后出”的原则。

首先,创建结构体和头文件等
typedef struct array
{
    char elem;
    struct array *next;
}array;
插入操作(进栈)
array *push_array(array *arr, char elem)
{
    array *tempArray = (array*)malloc(sizeof(array));//申请空间
    tempArray->elem = elem;//插入数据
    tempArray->next = arr;//将他的下一个指向前一个元素指针地址
    arr = tempArray;//进栈(头部)
    return arr;
}
删除操作(出栈)
array *pop_array(array *arr)
{
    if (arr) {
        array *p = arr;//出栈
        arr = arr->next;
        printf("弹出的元素为%c", p->elem);
        
        if (arr) {
            printf(",顶部元素为%c\n", arr->elem);
        } else {
            printf(",栈已空\n");
        }
        
    } else {
        printf("栈内没有元素");
    }
    
    return arr;
}

运行
int main()
{
    array *arr = NULL;
    arr = push_array(arr, 'a');
    arr = push_array(arr, 'b');
    arr = push_array(arr, 'c');
    arr = push_array(arr, 'd');
    
    arr = pop_array(arr);
    arr = pop_array(arr);
    arr = pop_array(arr);
    arr = pop_array(arr);
    return 0;
}


运行结果