数据结构(三)--栈
/*--> */ /*--> */ /*--> */ /*--> */ 数据结构(三)--栈 通常程序开发中内存管理是非常重要的,而内存主要分为占内存和堆内存。那么栈和堆内存有什么区别呢?希望在这篇文章里能带你找到答案! 1. 栈和堆的引入 在一个简单的程序中我们定义和声明几个基本类型的变量、结构体和数组,先来直观看一下栈和堆的不同: 静态变量 和 局部变量是以压栈出栈的方式分配内存的,系统会在一个代码段中分配和回收局部变量,实际上每个代码段、函数都是一个或多个嵌套的栈,我们不需要手动管理栈区内存。 动态内存是一种堆排序的方式分配内存的,内存分配好后便不会自动回收,需要程序员手动回收。否则就会造成内存泄漏,内存越用越少。 简单了解了一下程序中内存栈与堆的区别,下面就正式开始讲数据结构中的栈。 (注意:数据结构栈、内存栈、函数调用栈三者在含义上略有不同,但是其核心思想和理念是相同的) 2. 栈的定义 栈是一种“先进后出”的一种数据结构,有压栈出栈两种操作方式。如下图: 3. 栈的分类 栈主要分为两类: 静态栈 动态栈 【静态栈】 静态栈的核心是数组,类似于一个连续内存的数组,我们只能操作其栈顶元素。 【动态栈】 静态栈的核心是数组,类似于一个连续内存的数组,我们只能操作其栈顶节点。 4. 栈的算法 栈的算法主要是压栈和出栈两种操作的算法,下面我就用代码来实现一个简单的栈。