怎么用C语言实现链式栈
发表于:2025-01-26 作者:千家信息网编辑
千家信息网最后更新 2025年01月26日,这篇文章给大家分享的是有关怎么用C语言实现链式栈的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。堆栈的基本概念堆栈是只能在一端增删元素的表结构,该位置称为栈顶堆栈的基本运算是
千家信息网最后更新 2025年01月26日怎么用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安全错误
数据库的锁怎样保障安全
网络安全企业纯中国控股
济南软件开发网络
vc++数据库应用实训
滴滴顺风车牵引出的网络安全
魔兽世界游戏数据库
ftp自动登陆服务器
南方国际网络技术有限公司
电厂网络安全实施方案
sci数据库在线检索
朝阳金禾网络技术
太原服务器回收公司推荐
场景大师网络技术公司
vb中如何修改数据库
南京博风采网络技术怎么样
武汉大学图书馆数据库步骤
魔卡幻想怎么换服务器
腾讯云服务器镜像怎么那么少
新一代网络技术 论文
数据库各个字段的属性和说明
chns数据库的o到底在哪
数据库基建工程上市公司
电子网络技术专业都望了
严格规范网络安全通知
中国电信怎么保证服务器的安全
上海软件开发驻场价格表
网络安全研究员薪资颗多少
武汉大学图书馆数据库步骤
公安局信息网络安全会议记录
中年人学习网络安全
为维护国家网络安全