文档章节

简单的结构,模拟栈,栈入栈出

304158
 304158
发布于 2017/08/23 22:25
字数 258
阅读 11
收藏 0
#include<stdio.h>
#include<stdlib.h>
//简单的结构 模拟栈。
#define ARRAY_MAX 50//定义栈的大小。

struct mystruct  
{
	int top ;//表示头-1为空栈
	int array[ARRAY_MAX];

};
//初始化结构
struct mystruct stack = { -1,{0} }; 
int isempty(); //返回1是说明,栈为空。返回0时表示栈不为空。
void setempty();//清空栈。
int  push(int num);//推入栈
int pop();//从栈中弹出 ,栈的弹出顺序是,先入后出,后入先出。

//实现
int isempty() 
{
	if (stack.top==-1) //检测栈头是否是-1,是的话代表空栈。
	{
		return 1;
	}
	else 
	{
		return 0;
	}
}
void setempty() 
{
	stack.top = -1;
}
int push(int num) 
{
	if (stack.top>ARRAY_MAX-1) 
	{
		return -1;//返回-1 栈已满,防止溢出。
	}
	stack.top += 1;//改变下标。
	stack.array[stack.top] = num;

	return stack.top; //返回成功push的下标。

}
int pop() 
{
	if (stack.top > -1) //大于-1说明有参数
	{
		stack.top -= 1;		//下标位置减一
		return stack.array[stack.top + 1];//返回弹出的数据
	}
	//如果没有则什么都不操作
}
void main(void) 
{
	int num[10] = { 1,2,3,4,5,6,7,8,9,10 };
	for (int i=0; i < 10;i++)
	{
		push(num[i]);	//	推入数据
	}
	while (!isempty()) 
	{
		printf("%d\n",pop()); //弹出数据
	}

	system("pause");
}

 

© 著作权归作者所有

下一篇: C++ 函数指针
304158
粉丝 1
博文 105
码字总数 30016
作品 0
大兴安岭
私信 提问
利用栈实现浏览器的前进后退功能

1. 什么是栈? 栈的特点是后进先出,是一种“操作受限”的线性表,只允许在一端插入和删除。当某个数据集合只涉及在一端插入和删除数据,并且满足后进先出、先进后出的特性,就应该首选“栈”...

落英坠露
04/24
0
0
数据结构与算法之顺序栈C语言实现

顺序栈是一种特殊的顺序表,主要操作是入栈和出栈。将顺序表加一些特定限制,就成了顺序栈。 注: 1.顺序栈C语言实现; 2.按较简单的方式实现,主要帮助理解,可在此基础上修改,更加完善; ...

LeslieChan1014
2018/12/28
0
0
Java开发中巧妙使用链表来实现模拟栈的入栈出栈操作

  在Java开发中经常会碰到需要你用Java链表来实现入栈出栈的模拟操作,下文就这个操作做了一个详细的描述。   栈:后进先出;最后一个放入堆栈中的物体总是被最先拿出来。   使用链表来...

金铭鼎IT教育
01/22
22
0
JavaScript数据结构之队栈互搏

今天稍微停下前进的脚步,来看下队栈的左右互搏术。 前两天学习了队列和栈以后,今天就可以试着来用两个栈实现队列的功能 或者 用两个队列来实现栈的功能。 数据结构之---栈实现队列 1. 用两...

snowLu
2018/12/28
0
0
数据结构-栈和队列面试题(下)

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

sssssuuuuu666
2017/12/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

让《强化学习(第2版)》架起一座通往强化学习经典知识宝库的桥梁

上交大计算科学与工程系俞凯教授,5分钟口述讲解,带你快速认识了解年度重磅图书《强化学习(第二版)》! 在 AlphaGo战胜李世石之后,AlphaZero以其完全凭借自我学习超越人类在各种棋类游戏...

博文视点Bv
25分钟前
6
0
TLA7-EVM开发板的处理器、NOR FLASH、DDR3

TLA7-EVM开发板是一款由广州创龙基于Xilinx Artix-7系列FPGA自主研发的核心板+底板方式的开发板,可快速评估FPGA性能。核心板尺寸仅70mm*50mm,底板采用沉金无铅工艺的6层板设计,专业的PCB...

Tronlong创龙
34分钟前
4
0
UUID的变种-有序

为了解决UUID无序的问题,NHibernate在其主键生成方式中提供了Comb算法(combined guid/timestamp)。保留GUID的10个字节,用另6个字节表示GUID生成的时间(DateTime)。 /// <summary> //...

Canaan_
34分钟前
4
0
Netty学习(6)——通道间数据传输

1. FileChannel实现通道间的数据传输 在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel传输到另外一个channel。 transferFrom() FileChannel的transferF...

江左煤郎
38分钟前
4
0
AngularDOM操作

gtandsn
39分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部