文档章节

栈的代码实现之数组方案

 宁哥实战课堂
发布于 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
C语言实现数据结构之栈的详解

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

ningcaichen66
2017/09/21
0
0
字符串、数组、链表、栈、二叉树

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

Jansens
2016/11/05
45
0

没有更多内容

加载失败,请刷新页面

加载更多

延迟队列实现精准的订单超时取消--自我记录备份

订单的超时取消很多系统采用定时任务,实际上达不到要求。我用的是延迟队列,但缺点是只实现了基于jvm的,分布式采用的是修改之前去查询订单状态,以及分布式锁获取的方式来控制,这样获得锁...

checkboxMan
21分钟前
0
0
storm 环境搭建

1.下载解压 下载地址:http://storm.apache.org/downloads.html #下载wget https://www-us.apache.org/dist/storm/apache-storm-1.2.2/apache-storm-1.2.2.tar.gz#解压tar -zxf apache......

MrPei
35分钟前
1
0
Python Base - 读写文件,字符串拼接,单引号

字符转义 读写文件cvs 字符串拼接,替换 import csvcsv_file_name = 'cardbin.csv'# insert into `card_bin_code` (name_of, code_of, card_no_prefix, bank_code) values ('中国银行......

园领T
36分钟前
1
0
基于JQUERY BOOTSTRAP 最简单的loading遮罩层

<%--loading遮罩层--%><div class="modal fade" id="loadingModal" backdrop="static" keyboard="false">   <div style="width: 200px;height:20px; z-index: 20000; position: abs......

颖辉小居
37分钟前
1
0
springboot+kafka

1,首先springboot对kafka的支持也很好,同样是在配置文件中配置好参数,然后就可以直接使用。先说一下,很简单,,,不要怕 2,我用的依赖是 <dependency> <groupId>org.springframewor...

我真是小菜鸡
41分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部