面试官问我什么是「栈」,我随手画了10张图来解释(7)

2023-04-29 来源:飞速影视
栈数组与栈链表的代码实现
最后呢,我们使用代码来帮助我们了解一下:
栈数组
数组栈是一种更为快速的模拟实现栈的方法,这里我们不多说。
模拟,就是不采用真实的链表设计,转而采用数组的方式进行模拟操作。
也就是说这是一种仿真类型的操作,其可以快速的帮助我们构建代码,分析过程,相应的实现起来也更加的便捷。
其代码如下:
#include<stdio.h>#include<stdlib.h>#include<string.h>#define maxn 10000//结点设计typedefstructstack{int data[maxn];int top;}stack;//创建stack *init(){stack *s=(stack *)malloc(sizeof(stack));if(s==NULL){printf("分配内存空间失败");exit(0);}memset(s->data,0,sizeof(s->data));//memset操作来自于库文件string.h,其表示将整个空间进行初始化//不理解可以查阅百度百科https://baike.baidu.com/item/memset/4747579?fr=aladdin s->top=0; //栈的top和bottom均为0(表示为空)return s;}//入栈pushvoidpush(stack *s,int data){ s->data[s->top]=data; s->top ;}//出栈popvoidpop(stack *s){if(s->top!=0){ s->data[s->top]=0; //让其回归0模拟表示未初始化即可 s->top--; }}//模拟打印栈中元素voidprint_stack(stack *s){for(int n=s->top-1;n>=0;n--){printf("%d ",s->data[n]); }printf(" "); //习惯性换行}intmain(){stack *s=init();int input[5]={11,22,33,44,55}; //模拟五个输入数据for(int i=0;i<5;i ){ push(s,input[i]); } print_stack(s);///////////// pop(s); print_stack(s);return0;}
相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号