冰山ui吧 关注:22贴子:819
  • 6回复贴,共1

在水一帖,数据结构之栈

只看楼主收藏回复

栈是最常用的数据结构,栈的数据处理只能在一段进行,先进后出,也就是最先进去的最后出来,最后进去的最先出来,类似往瓶子里面装东西,还有一种结构是队列和他顺序相反这里不考虑
比如现在一个栈里面的数据是这样
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系统)包括
栈区
堆区
静态区 (一般是全局变量,静态变量,只能程序结束才释放)
代码区 (程序代码,只读区)
栈是一种简单常用的数据结构
注:这里的堆不是数据结构里面的堆,数据结构里面堆是树形结构


IP属地:辽宁来自Android客户端1楼2017-03-16 20:36回复
    下次别用这种标题。。。


    2楼2017-03-16 20:40
    收起回复
      另外这里说明一下我一年前发现的一个秘密,其实有人把每个程序在运行时的栈区导出看一下可以发现,其实在32位系统上所有变量都是32位对其64位就是64位对其,比如一个8位变量,他的实际大小是你家计算机的位数,比如你家是32位计算机,那么他就是高三字节是0最低一个字节是变量内容,也就是不够用0补


      IP属地:辽宁来自Android客户端3楼2017-03-16 20:43
      收起回复
        例子


        4楼2017-03-27 18:36
        收起回复