文档章节

栈的代码实现之数组方案

 宁哥实战课堂
发布于 2017/09/09 17:34
字数 377
阅读 8
收藏 0

栈是一种具有从宏观上来看是“先进后出”功能特点的数据结构。可以由数组或者链表来实现。

其实现原理是从“一端”操作,导致先存储的数据最后被取出。有栈顶、栈底等因素组成。在《C语言,好爽》第7版(2017年)第76集:栈的代码实现之数组方案,中对栈的内存实现原理进行了详解。这里只从宏观上来理解,以及相关代码如何实现。

其结构体类型为:

#define N 30

struct _stack

{

int top;

int data[N];

};

typedef struct _stack mystack;

对栈的操作通常有初始化、判断栈空、栈满,入栈,操作,清空等操作。这里分别实现:

栈的代码实现之数组方案

栈的代码实现之数组方案

栈的代码实现之数组方案

栈的代码实现之数组方案

栈的代码实现之数组方案

栈的代码实现之数组方案

栈的代码实现之数组方案

栈的代码实现之数组方案

调用代码:

int main() {

mystack ms;

init(&ms);

int flag = 0;

int value = 0;

value = 0;

flag = push(&ms, value);

if (flag)

{

printf("%d 入栈成功", value);

}

else

{

printf("%d 入栈失败", value);

}

value = 1;

flag = push(&ms, value);

if (flag)

{

printf("%d 入栈成功", value);

}

else

{

printf("%d 入栈失败", value);

}

value = 2;

flag = push(&ms, value);

if (flag)

{

printf("%d 入栈成功", value);

}

else

{

printf("%d 入栈失败", value);

}

show(&ms);

//弹出栈

int output_value = 0;

int output_flag = 0;

output_flag = pop(&ms, &output_value);

if (output_flag)

{

printf("出栈成功,出栈的数据为:%d", output_value);

}

else

{

printf("出栈失败");

}

output_flag = pop(&ms, &output_value);

if (output_flag)

{

printf("出栈成功,出栈的数据为:%d", output_value);

}

else

{

printf("出栈失败");

}

output_flag = pop(&ms, &output_value);

if (output_flag)

{

printf("出栈成功,出栈的数据为:%d", output_value);

}

else

{

printf("出栈失败");

}

show(&ms);

system("pause");

return 0;

}

测试结果:

栈的代码实现之数组方案

© 著作权归作者所有

共有 人打赏支持
粉丝 5
博文 72
码字总数 77184
作品 0
长沙
其他
私信 提问
数据结构-栈和队列面试题(下)

之前的可点击栈和队列面试题(上) 面试题四:元素出栈、入栈顺序的合法性。如入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)。 思路: ①首先判断出栈入栈序列长度是否一致,不一致直接...

sssssuuuuu666
2017/12/05
0
0
栈的代码实现之数组方案

栈是一种具有从宏观上来看是“先进后出”功能特点的数据结构。可以由数组或者链表来实现。 其实现原理是从“一端”操作,导致先存储的数据最后被取出。有栈顶、栈底等因素组成。在《C语言,好...

ningcaichen66
2017/10/01
0
0
使用两个栈实现队列,使用两个队列实现栈。

我是一个栈,我的双胞胎弟弟叫队列。我的爸爸是数组,我的妈妈是链表。在上一篇文章中,向你们介绍了我的家族成员对于数据存储方面的能力和特性。还包括如何通过数组和链表来实现栈和队列。 ...

03/25
0
0
字符串、数组、链表、栈、二叉树

1.1 字符串 确定两个字符串同构 StringA的字符重新排列后,能否变成StringB 详细 tips: 第一步先判断两个字符串的长度是否相等 字符串的长度为有括号 1.2 数组 清除二维数组行列 将数组中所有...

Jansens
2016/11/05
45
0
C语言实现数据结构之栈的详解

在函数调用的过程中,需要的就是先进后出的特点,因此,栈就出现了。 栈是一种数据结构,是计算机怎么处理程序运行的一种方式。具有先进后出的特点,下面看的就是这些抽象的数据结构怎么用C...

ningcaichen66
2017/09/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

在PC上测试移动端网站和模拟手机浏览器的5大方法

总结很全面,保存下来以备不时之需。原文地址:https://www.cnblogs.com/coolfeng/p/4708942.html

kitty1116
23分钟前
1
0
分布式Session共享解决方案

分布式Session一致性? 说白了就是服务器集群Session共享的问题 Session的作用? Session 是客户端与服务器通讯会话跟踪技术,服务器与客户端保持整个通讯的会话基本信息。 客户端在第一次访...

Java干货分享
29分钟前
4
0
开源软件和开源模式面临的生存危机

导读 开源模式可能正面临一场危机。越来越多的开源软件和平台被大型云计算服务商融入自家的云服务体系,并以此获利颇丰,但并不支付费用,也没有对开源社区做出相应的回馈。而实际上,大部分...

问题终结者
31分钟前
3
0
让看不见的AI算法,助你拿下看得见的广阔市场

人工智能技术的飞速发展给各行各业都带来了深远的影响,AI已被视为企业提升运营效能、应对市场竞争的必经之路。然而对于一些企业而言,让AI真正实现落地和应用,并且创造价值,仍是一件需要努...

个推
35分钟前
2
0
用SAN还是NAS?我来告诉你

存储区域网络(SAN)是以一种结构连接的存储,通常通过交换机连接,使许多不同的服务器能够轻松访问存储设备。从服务器应用程序和操作系统的角度来看,访问SAN中的数据存储或直接连接的存储之间...

linux-tao
39分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部