怎么用C语言实现链式栈
发表于:2024-11-18 作者:千家信息网编辑
千家信息网最后更新 2024年11月18日,这篇文章给大家分享的是有关怎么用C语言实现链式栈的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。堆栈的基本概念堆栈是只能在一端增删元素的表结构,该位置称为栈顶堆栈的基本运算是
千家信息网最后更新 2024年11月18日怎么用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安全错误
数据库的锁怎样保障安全
浙江智能化软件开发优势
警示儿童网络安全电影
广西软件开发资质
信息安全是网络安全的自己
电信网络安全日活动
云南酒泉网络安全事件
小米应用软件开发在哪里
了解网络安全产品
小学生网络安全事件
上海网络安全股票
北京访客管理软件开发方案
电脑中的数据库中的数据表
sql附加数据库后变只读
大安全时代的网络安全论文
软件开发职业对社会的贡献
河南睿朵网络技术有限公司
mc局域网连接不到服务器
领傲金航互联网科技有限公司
c 软件开发csdn
数据访问层属于哪个服务器
组态王软件开发的步骤
网络安全专业主要的学习内容
加强网络安全的好玩标语
数据库 查询所有子级
nisec网络安全中心
线上的网络技术
小米应用软件开发在哪里
数据库表映射关系一对多
余姚手机软件开发选哪家
数据库共享方式