数据结构——堆栈

数据结构——堆栈

 

宗旨:技术的学习是有限的,分享的精神是无限的。

 

1、特性:先进后出(FILO

 

2、应用:

       子程序的调用

       处理递归调用

       表达式转换与求值

       二叉树的遍历

       图形的深度优化优先

 

3、用数组仿真堆栈

(1)堆栈数组结构

char stack[MAX_SIZE]; //堆栈的最大容量

int top = -1; //-1表示堆栈为空,随着堆栈中数据量的变动改变指向顶端的位置

(2)数据的存取

 数据输入堆栈【push】:栈顶指针top+1;若top小于MAX_SIZE,则数据存入top所指的数组元素中,否则堆栈已满,无法存入数据。         

void push(int value)
{if(top >= MAX_SIZE) //堆栈已满{printf("stackis full!\n");}else{top++;//堆栈指针+1stack[top] = value; //将数据压入栈中}
}

数据输出堆栈【pop】:若堆栈指针索引大于0(堆栈未空),则取出目前栈顶指针top所指数组内容;top-1指向下一个堆栈元素。   

int pop(void)
{int temp;//暂存从堆栈中取出的数据int i;if(top < 0) // 堆栈为空,退出{printf("stackis empty!\n");return -1;}temp = stack[top]; //将数据pop出栈top--;return temp;
}

4、用链表仿真堆栈

(1)堆栈链表结构

typedef struct node
{int data;struct node *next;
} list, *link;
link stack = NULL; //向链表顶端的

(2)数据的存取

 数据输入堆栈【push】:建立一个新节点;将新节点的指针指向原来堆栈指针所指的节点;将原来的节点指向新节点。

void push(int value)
{link new;new = (link)malloc(sizeof(list));new-> data = value;new-> next = stack;stack = new;
}

  数据输出堆栈【pop】:先保留栈头指针stack所指的位置;将堆栈指向下一个节点;取出原堆栈顶端指针所指的节点内容;释放原堆栈顶端指针所指的节点内存。

int pop(void)
{link pop;int temp;if(stack != NULL){pop = stack;stack = stack -> next;temp = pop -> data;free(pop);return temp;}return -1;
}

      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

处理String类常用的方法1

public class Dome{public static void main(String[] args) {char[] chnew char[] {你,你,你};String strnew String(ch);System.out.println(str);char[] qwestr.toCharArray();} }此为数组转化为字符串&#xff0c;然后字符串又转回数组的方法。 public static void main(St…

电脑控制android手机神器,scrcpy

我同事有一个华为手机&#xff0c;手机里内置了NFC&#xff0c;然后把手机靠近下电脑&#xff0c;当然的&#xff0c;一定需要是华为笔记本&#xff0c;然后电脑就弹出一个界面&#xff0c;控制手机的界面&#xff0c;这个功能非常好&#xff0c;加上NFC的功能&#xff0c;体验…

粗谈LINUX下的文件系统管理

在各网络操作系统中,都可分为系统理与网络管理两部分&#xff0c;而在LINUX下&#xff0c;若要向系统管理方面发展的话&#xff0c;就必须了解LINUX下的用户管理与文件管理。前面己经介绍了用户管理&#xff0c;下面将粗谈一下LINUX下的文件系统。那么究竟什么是文件系统呢&…

百钱买白鸡与啤酒饮料

第一题 标题&#xff1a;啤酒和饮料 啤酒每罐2.3元&#xff0c;饮料每罐1.9元。小明买了若干啤酒和饮料&#xff0c;一共花了82.3元。 我们还知道他买的啤酒比饮料的数量少&#xff0c;请你计算他买了几罐啤酒。 注意&#xff1a;答案是一个整数。请通过浏览器提交答案。 不…

Modbus协议概念最详细介绍

★一文认识Modbus协议&#xff1b;”1 什么是Modbus&#xff1f;2 主从模式3 协议的分类3.1 Modbus ASCII3.2 Modbus RTU3.3 Modbus TCP3.4 Modbus Plus4 libmodbus5 freemodbus6 总结1 什么是Modbus&#xff1f;Modbus是Modicon&#xff08;施耐德&#xff09;公司于1979年开发…

OpenvSwitch实现kubernetes依赖的底层网络

kubernetes网络模型设计的一个基础原则是&#xff1a;每个Pod都拥有一个独立的IP地址&#xff0c;而且假定所有Pod都在一个可以直接连通的、扁平的网络空间中&#xff08;在GCE里面是现成的网络模型&#xff09;。在kubernetes中&#xff0c;IP是以Pod为单位进行分配的。一个Po…

该不该放弃嵌入式,单片机这条路?

知乎提问&#xff1a;本人&#xff0c;一个毕业工作两年在深圳工作的菜鸟单片机工程师。说说这两年来自己的一些看法。个人语言表述能力较差&#xff0c;加之经验不足&#xff0c;望见谅。1.程序编写1.1对架构能力要求较高。比如做一个自动售卖咖啡机&#xff0c;在开始写之前要…

6月份Asp.net源码推荐

整理了一下51aspx上6月份的Asp.net源码&#xff0c;特推荐一些给大家免费下载- 阿江酷站统计系统ASP.Net修正版Hits:262 2007-6-29阿江酷站单用户访问统计系统ASP.Net修正版 通过在要统计的页面潜入js脚本就可以对访问进行详细统计&#xff0c;可以按小时、日、月、年进行柱状图…

在家工作多年再回深圳找工作,会不会丢脸?

jiy发哥好。职场难题&#xff0c;江湖救急&#xff0c;请教你&#xff1a; 我刚毕业曾在深圳待过&#xff0c;那时候真是菜得什么都不会&#xff0c;折腾来折腾去一直没找到合适的坑&#xff0c;所以混了一两年又回老家小城市了。 小城市待遇普通&#xff0c;工作机会不多&…

数独

数独 时间限制&#xff1a;1000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;4描述数独是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据99盘面上的已知数字&#xff0c;推理出所有剩余空格的数字&#xff0c;并满足每一行、每一列、每一个3*3宫内的数字均含1-9&…

初识Jedis

文章主要分两部分&#xff0c;第一部分&#xff1a;简单分析一些类&#xff0c;第二部分&#xff1a;代码示例 一、相关类分析 1、JedisPoolConfig类分析 JedisPoolConfig类是JedisPool的配置类 //最大空闲连接数, 默认8个 config.setMaxIdle(8);//最大连接数, 默认8个 config.…

Linux内存寻址方式

为什么要内存管理&#xff1a;早期的程序都是直接运行在物理地址上&#xff0c;也就是说这个程序所需要的空间不超过该机器的物理内存就不会有问题&#xff0c;但实际场景中都是多任务&#xff0c;多进程的&#xff0c;这种物理地址reserved给各个进程是不靠谱的。举个栗子&…

DotNetNuke 框架总揽

我总觉的学一样东东&#xff0c;最好是先在总体上对他有一个认识&#xff0c;而后才能更好的学习&#xff0c;最近刚好有机会学习DotNetNuke这个东西&#xff0c;就把所学到的都写下来&#xff0c;与大家一起分享&#xff0c;有不对的地方&#xff0c;大家一起讨论&#xff0c;…

迷宫

描述一个由 n * m 个格子组成的迷宫,起点是(1, 1), 终点是(n, m),每次可以向上下左右四个方向任意走一步,并且有些格子是不能走动,求从起点到终点经过每个格子至多一次的走法数。输入第一行一个整数 T 表示有 T 组测试数据。(T < 110)对于每组测试数据:第一行两个整数 n, m,…

day3-python学习笔记(三)字典、元组

一.字典操作、元组操作&#xff08;字典增删改查以及数组&#xff0c;字典嵌套查询&#xff09;# 字符串&#xff0c;整型&#xff0c;list&#xff0c;字典# stus [ # [小傅,25,nan,xxx,20k]# [小傅,25,nan,xxx,20k]# [小傅,25,nan,xxx,20k]# [小傅,25,n…

超全!嵌入式必懂的CAN总线一文讲通了

嵌入式的工程师一般都知道CAN总线广泛应用到汽车中&#xff0c;其实船舰电子设备通信也广泛使用CAN&#xff0c;随着国家对海防的越来越重视&#xff0c;对CAN的需求也会越来越大。这个暑假&#xff0c;通过参加苏州社会实践&#xff0c;去某船舶电气公司实习几周&#xff0c;也…

选择排序法

选择排序法 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 思想&#xff1a; 线性查找的方式找出最小的元素和第一个元素交换&#xff0c;再从剩下的&#xff08;n - 1&#xff09;个数据中&#xff0c;找出最小的元素与第二个元素交换&#xff0c;以…

Gentle中的数据表实体类相关自定义属性的设置和获得

1.自定义 表名属性 TableNameAttribute2.自定义 主键属性 PrimaryKeyAttribute3.自定义 列名属性 TableColumnAttribute 4.数据表person对应的实体类person.cs5.获得person.cs类型实体 对应的表名及字段名 下面的属性代码文件 都直接建立在App_Code下 以方便使用 1.自定义 表名…

蛇形填数 递归

蛇形填数 描述在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n4时方陈为&#xff1a;输入直接输入方陈的维数&#xff0c;即n的值。(n<100)输出输出结果是蛇形方陈。样例输入3 样例输出 1 8 7 2 9 6 3 4 5 #include<iostream> using namespace std; #define N…

WebSocket介绍

WebSocket协议是基于TCP的一种新的协议。WebSocket最初在HTML5规范中被引用为TCP连接&#xff0c;作为基于TCP的套接字API的占位符。它实现了浏览器与服务器全双工(full-duplex)通信。其本质是保持TCP连接&#xff0c;在浏览器和服务端通过Socket进行通信。 本文将使用Python编…