千家信息网

怎么用C语言实现链式栈

发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章给大家分享的是有关怎么用C语言实现链式栈的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。堆栈的基本概念堆栈是只能在一端增删元素的表结构,该位置称为栈顶堆栈的基本运算是
千家信息网最后更新 2025年11月13日怎么用C语言实现链式栈

这篇文章给大家分享的是有关怎么用C语言实现链式栈的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

堆栈的基本概念

堆栈是只能在一端增删元素的表结构,该位置称为栈顶堆栈的基本运算是压入和弹出,前者相当于插入,而后者则是删除最后插入的元素,形成后进先出的运算规则最后插入的元素在被弹出之前可以作为栈顶被外界访问从空栈中弹出,或向满栈中压入,都被认为是一种错误

常见的栈有顺序栈和链式栈

顺序栈

链式栈

- 链式栈的C代码实现

#include #include /*节点的结构*/typedef struct node {    struct node* pnode;    int data;}node_t;/*栈的结构*/typedef struct stack {    struct node* top;//栈顶指针    int size;//栈中数据个数}stack_t;/*初始化栈*/void stack_init(stack_t* stk){    stk->top = NULL;    stk->size = 0;}/*压栈操作*/void stack_push(stack_t* stk, int data){    node_t *node = malloc(sizeof(node_t));    node->data = data;    node->pnode = stk->top;    stk->top = node;    stk->size++;}/*弹栈:将栈中数据弹入buf*/void stack_pop(stack_t* stk, int buf[], int size){    for(int i = 0; i < size; ++i) {        if(stk->size == 0) {            printf("栈中数据已弹净!\n");            break;        }        node_t* temp = stk->top;        buf[i] = stk->top->data;        stk->top = stk->top->pnode;        stk->size--;        free(temp);    }   }/*删除整个栈*/void stack_deinit(stack_t* stk){    while(stk->size || stk->top) {        node_t* temp = stk->top;        stk->top = stk->top->pnode;        stk->size--;        free(temp);    }   }/*从栈顶自上而下打印栈中所有数据*/void print_stack(stack_t* stk){       if(stk->size == 0) {        printf("栈中无数据!\n");    }       for(node_t* node = stk->top;        node; node = node->pnode) {        printf("%d ",node->data);    }       printf("\n");}/*测试代码*/#define N 30int main(void){    stack_t stack;    int buf[N];    stack_init(&stack);    printf("开始压栈!\n");    for(int i = 0; i < N; ++i) {        stack_push(&stack, i);    }    print_stack(&stack);//打印栈中数据    //stack_deinit(&stack);    printf("开始弹栈!\n");    stack_pop(&stack, buf, N);//弹栈    print_stack(&stack);    printf("取出的数据为:");    for(int i = 0; i < sizeof(buf) /        sizeof(buf[0]); ++i) {        printf("%d ", buf[i]);    }    printf("\n");    return 0;}

代码运行效果

感谢各位的阅读!关于"怎么用C语言实现链式栈"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

数据 链式 代码 堆栈 结构 语言 元素 内容 更多 篇文章 顺序 运算 不错 实用 一端 个数 中压 位置 后进 外界 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 微软的发件服务器的主机名 春节网络安全预防保障面临风险 十四五网络安全规划意见 谷歌网络安全专家 苹果id连接到服务器时出现问题 一个蛋糕网站的数据库怎么建立 宜兴计算机网络技术创新服务 常用的人脸数据库有哪些 潍坊学院期末数据库 固原软件开发专业报价 慧源通网络技术公司是干嘛的 学计算机网络技术能当网管吗 网络安全外包保密责任书 试题库组卷系统软件开发步骤 安仁电脑软件开发招生 软件开发工程师就业访谈 智慧红色文化软件开发公司 欣网互联网络科技郑州 网络安全保险如何索赔 软件开发后的工作总结 计算机网络技术基础操作实验 主数据库文件后缀 诚通网络技术有限公司 网络安全人才缺口文件 软件开发工作评语 数据库时间索引 实时型数据库排名 数据库服务器部署方案 第二届华为云数据库挑战赛 香港李凯软件开发
0