news 2026/6/10 12:36:17

线性表之顺序栈

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
线性表之顺序栈
  • 栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈)
  • 允许进行操作的一端称为”栈顶“
  • 另一固定端称为”栈底“
  • 当栈中没有元素时称为”空栈“
  • 特点:后进先出(LIFO)或先进后出

  • 顺序栈是顺序表的一种,具有顺序表同样的存储结构,由数组定义,配合用数组下标表示的栈顶指针top(相对指针)完成各种操作
typedefintdata_t;/*定义栈中数据元素的数据类型*/typedefstruct{data_t*data;/*用指针指向栈的存储空间*/intmaxlen;/*当前栈的最大元素个数*/inttop;/*指示栈顶位置(数组下标)的变量*/}sqstack;/*顺序栈类型定义*/

顺序栈

功能代码

#include<stdio.h>#include<stdlib.h>#include<string.h>#include"sqstack.h"sqstack*stack_create(intlen){sqstack*s;if((s=(sqstack*)malloc(sizeof(sqstack)))==NULL){printf("malloc sqstack failed\n");returnNULL;}if((s->data=(data_t*)malloc(len*sizeof(data_t)))==NULL){printf("malloc data failed\n");free(s);returnNULL;}memset(s->data,0,len*sizeof(data_t));s->maxlen=len;s->top=-1;returns;}intstack_push(sqstack*s,data_tvalue){if(s==NULL){printf("s is NULL\n");return-1;}if(s->top==s->maxlen-1){printf("stack is full\n");return-1;}s->top++;s->data[s->top]=value;return0;}intstack_empty(sqstack*s){if(s==NULL){printf("s is NULL\n");return-1;}return(s->top==-1?1:0);}intstack_full(sqstack*s){if(s==NULL){printf("s is NULL\n");return-1;}return(s->top==s->maxlen-1?1:0);}data_tstack_pop(sqstack*s){s->top--;return(s->data[s->top+1]);}data_tstack_top(sqstack*s){return(s->data[s->top]);}intstack_clear(sqstack*s){if(s==NULL){printf("s is NULL\n");return-1;}s->top=-1;return0;}intstack_free(sqstack*s){if(s==NULL){printf("s is NULL\n");return-1;}if(s->data!=NULL){free(s->data);}free(s);return0;}

头文件

typedefintdata_t;typedefstruct{data_t*data;intmaxlen;inttop;}sqstack;sqstack*stack_create(intlen);intstack_push(sqstack*s,data_tvalue);intstack_empty(sqstack*s);intstack_full(sqstack*s);data_tstack_pop(sqstack*s);data_tstack_top(sqstack*s);intstack_clear(sqstack*s);intstack_free(sqstack*s);

测试文件

#include<stdio.h>#include"sqstack.h"intmain(intargc,constchar*argv[]){sqstack*s;s=stack_create(100);if(s==NULL)return-1;stack_push(s,10);stack_push(s,20);stack_push(s,30);stack_push(s,40);while(!stack_empty(s)){printf("pop: %d \n",stack_pop(s));}stack_free(s);return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 17:24:16

【图像评价】数字病理图像无参考焦点质量评估附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码获取及仿真…

作者头像 李华
网站建设 2026/6/9 23:44:44

TSMC 28nm工艺库:全面文档支持的可仿真技术

tsmc28nm工艺库&#xff0c;可仿真 文档齐全最近在折腾TSMC 28nm工艺库&#xff0c;发现这玩意儿对做芯片设计的人来说真是宝藏——尤其是文档写得跟说明书似的&#xff0c;连我这个常年翻墙找资料的人都觉得够用了。先不说别的&#xff0c;光看他们给的仿真模型就很有意思&…

作者头像 李华
网站建设 2026/6/10 15:53:08

云手机中的潜力有哪些?

云手机作为云计算与移动互联网融合的产物&#xff0c;蕴含着巨大的潜力&#xff0c;在多个领域展现出广阔的发展前景&#xff0c;云手机为云游戏的普及提供了有力支持&#xff0c;玩家无需花费大量资金购买高端游戏设备&#xff0c;只需通过云手机即可随时随地畅玩各类云游戏&a…

作者头像 李华
网站建设 2026/6/10 15:52:45

云手机在教育领域中的作用

云手机在教育领域正逐渐崭露头角&#xff0c;凭借其独特的优势为教育带来诸多积极影响&#xff0c;在丰富学习资源、促进个性化学习以及创新教学模式等方面发挥着重要作用。传统学习设备可能因配置有限&#xff0c;无法安装或流畅运行一些大型学习软件、在线课程平台等&#xf…

作者头像 李华
网站建设 2026/6/9 18:38:18

策略路由实验配置

策略路由实验配置 实验要求 要求PC1走AR1-AR2-AR4到达PC3 要求PC2走AR1-AR3-AR4到达PC3策略路由的配置思路&#xff1a; 1、匹配业务流量ACL 3000 2.业务流量进行分类classifier—if-match 3.业务流量流行为behavior—redirect 4.业务流量策略 traffic policy----关联流分类和流…

作者头像 李华
网站建设 2026/6/10 9:51:16

全国男生哄对象的 9 句 “保命金句”,听完气消一半!

1️⃣ “随便买&#xff01;账单我来结”2️⃣ “除了你&#xff0c;别人我都看不上”3️⃣ “我的错我的错&#xff0c;下次还听你的”4️⃣ “这辈子栽你手里&#xff0c;我认了&#xff01;”5️⃣ “碗我洗地我拖&#xff0c;你躺着追剧就行”6️⃣ “拼命搞钱&#xff0c;…

作者头像 李华