栈是最常用的数据结构,栈的数据处理只能在一段进行,先进后出,也就是最先进去的最后出来,最后进去的最先出来,类似往瓶子里面装东西,还有一种结构是队列和他顺序相反这里不考虑
比如现在一个栈里面的数据是这样
1
2
5
8
执行一次压栈push 2他就成了这样
2
1
2
5
8
在执行一次压栈push 6
6
2
1
2
5
8
执行一次出栈pop 就成了这样
2
1
2
5
8
堆和栈
堆和栈是一种结构,但是是两种东西,堆和栈在内存中位置不一样,用法也不一样,比如当程序员定义一个变量,调用一个函数
就执行了栈操作,堆只能由程序员自己申请释放
也就是说堆是程序员自己写代码申请释放,栈是有编译器生成的代码进行申请和释放由操作系统管理,当然程序员也能自己用代码调用栈。
内存中的位置,一般一个进程结构(win,Linux系统)包括
栈区
堆区
静态区 (一般是全局变量,静态变量,只能程序结束才释放)
代码区 (程序代码,只读区)
栈是一种简单常用的数据结构
注:这里的堆不是数据结构里面的堆,数据结构里面堆是树形结构
比如现在一个栈里面的数据是这样
1
2
5
8
执行一次压栈push 2他就成了这样
2
1
2
5
8
在执行一次压栈push 6
6
2
1
2
5
8
执行一次出栈pop 就成了这样
2
1
2
5
8
堆和栈
堆和栈是一种结构,但是是两种东西,堆和栈在内存中位置不一样,用法也不一样,比如当程序员定义一个变量,调用一个函数
就执行了栈操作,堆只能由程序员自己申请释放
也就是说堆是程序员自己写代码申请释放,栈是有编译器生成的代码进行申请和释放由操作系统管理,当然程序员也能自己用代码调用栈。
内存中的位置,一般一个进程结构(win,Linux系统)包括
栈区
堆区
静态区 (一般是全局变量,静态变量,只能程序结束才释放)
代码区 (程序代码,只读区)
栈是一种简单常用的数据结构
注:这里的堆不是数据结构里面的堆,数据结构里面堆是树形结构