文档章节

栈的代码实现之数组方案

 宁哥实战课堂
发布于 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
数组和链表结构(python)_1

本文的最新版本位于:https://github.com/iwhales/algorithmsnotes 转载请注明出处:https://www.jianshu.com/u/5e6f798c903a 参考:《数据结构(Python 语言描述)》- 第4章 数组和链表 在编...

曾翔翔
07/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java并发备忘

不安全的“先检查后执行”,代码形式如下: if(条件满足){ //这里容易出现线程安全问题//doSomething}else{//doOther} 读取-修改-写入 原子操作:使用CAS技术,即首先从V中读取...

Funcy1122
今天
0
0
SpringBoot2.0 停机

最近新建了个SpringBoot2.0的项目,因为原来一直使用的是传统的Tomcat部署war包的形式,所以这次SpringBoot内置Tomcat部署jar包的时候遇到了很多问题。其中一个就是因为没有外置的Tomcat容器...

Canaan_
昨天
0
1
Confluence 6 外部参考

一个外部参考的意思是任何站点链接到你 Confluence 的实例。任何时候当 Confluence 的用户单击这个外部链接的时候,Confluence 可以记录这次单击为参考。 在默认的情况下,外部链接的参考链接...

honeymose
昨天
0
0
Android中的设计模式之抽象工厂模式

参考 《设计模式解析》 第十一章 Abstract Factory模式 《设计模式:可复用面向对象软件的基础 》3.1 Abstract Factory 抽象工厂 对象创建型模式 《Android源码设计模式解析与实战》第6章 创...

newtrek
昨天
0
0
Redis | 地理空间(GEO)的一个坑

Redis的地理空间(Geo)是个好东西,轻轻松松的就可以把地图描点的问题处理了, 最近却遇到一个坑...Redis采用的Msater-Slave模式, 运用GEORADIUS在salve读取对应的数据,新增了从节点但是从不返...

云迹
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部