C语言学习之数据结构栈的实现

本文和大家分享的主要是c 语言数据结构中 的相关内容,一起来看看吧,希望对大家 学习c语言有所帮助。
  在函数调用的过程中,需要的就是先进后出的特点,因此,栈就出现了。
  栈是一种数据结构,是计算机怎么处理程序运行的一种方式。具有先进后出的特点,下面看的就是这些抽象的数据结构怎么用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);
  实现栈的方式虽然有多种,但是不要死记硬背,要根据自己的理解去选择,怎么适合自己的理解就怎么选择,灵活的学习轻松的学习,秘诀就在于此。比如我的笔记中就记录了多种方式,但是这里只选择一种合适的:

编程领域其实是相通的,相通的东西就是编程思想,至于语言的语法不同,只是表现形式,要透过现象看本质,才能真正把握编程的灵魂,才能有希望学的越来越轻松,否则很可能陷入其中很苦恼。
  
来源: 简书
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值