重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在函数调用的过程中,需要的就是先进后出的特点,因此,栈就出现了。
创新互联专注于企业营销型网站、网站重做改版、衡水网站定制设计、自适应品牌网站建设、H5网站设计、商城网站开发、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为衡水等各大城市提供网站开发制作服务。栈是一种数据结构,是计算机怎么处理程序运行的一种方式。具有先进后出的特点,下面看的就是这些抽象的数据结构怎么用C语言代码来实现,栈能实现,那么其他的数据结构也就自然可以用C语言实现的了,如:队列。
C语言实现栈的代码,可以有数组形式,链表形式,下面讲解的是数组形式来实现。
静态数组因为有个大小,而且它在内存的栈区,默认为1M,所以静态数组不会分配的很大,因此用数组来实现,有个栈的容量的问题,自然就会带出“栈顶”和“栈底”,的概念。
实现环境:Visual Studio 2017
存储数据需要数组,同时有个栈中当前位置,可以想的到,在C语言中应该至少用结构体来实现。
实现栈的结构体如下:
然后根据栈的特点,会有这么几个接口:
1:判断是否栈满;
2:判断是否栈空;
3:设置栈为空;
4:入栈;
5:出栈;
为了方便数组操作,先定义一个宏:
#define N 100
下面是各个接口的实现:
调用以上接口,来测试栈的效果:
测试结果:
其实栈的实现还有链表的方式来实现。同时,C语言实现栈,只能到面向过程的范围。可以用C++来实现面向对象的栈方式,调用起来更加方便,形如:
Mystack ms;
ms.push(1);
ms.push(2);
ms.push(3);
ms.push(4);
ms.push(5);
弹出形如:
int a=ms.pop(1);
实现栈的方式虽然有多种,但是不要死记硬背,要根据自己的理解去选择,怎么适合自己的理解就怎么选择,灵活的学习轻松的学习,秘诀就在于此。比如我的笔记中就记录了多种方式,但是这里只选择一种合适的:
编程领域其实是相通的,相通的东西就是编程思想,至于语言的语法不同,只是表现形式,要透过现象看本质,才能真正把握编程的灵魂,才能有希望学的越来越轻松,否则很可能陷入其中很苦恼。
探索轻松学编程之道,我一直在做......
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。