码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构的深入理解

时间:2019-12-28 19:21:54      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:拓展   asd   baidu   编译器   bsp   个人   数据   参考   add   

 

简述

  数据结构是组织存储数据,以便我们有效的访问、更改数据。堆栈、队列是计算机中定义最早的数据结构。堆栈是后进先出(一端固定另一端浮动),队列是先进先出的数据组织和存储形式。

代码

堆栈code

lists = []   #定义空的堆栈,可以把它理解成一个地铁(这个地铁只有一侧门出入)

 

lists.append(‘a‘)  #堆栈添加数据,可以把它理解成一个挤进地铁的人最新进入的认会被挤到最后头

lists.append(‘b‘)

lists.append(‘f‘)

lists.append(‘g‘)

 

last_out = lists.pop()  #pop出最后一个进入列表的‘g’栈(最后挤入地铁的那个人)

print last_out

 

last_out = lists.pop()  #pop出倒数第二个进入列表的‘f’栈(刚才已经出去了一个)

print last_out

代码写到这里想到列表中的偏移量就代表了堆栈的先后出的元素,先出的偏移量就是0

队列

fruits  =  []

 

fruits.append(‘apple‘)

fruits.append(‘banana‘)

fruits.append(‘oragin‘)

fruits.append(‘grapes‘)

 

first_out = fruits.pop(0)  #pop出‘grapes’

print fruits

 

first_out = fruits.pop(0)  #pop出‘oragin’

print fruits

堆、栈拓展

他们所达到的最终目的相同都是先进后出结构,一端固定另一端浮动。但是他们的实现方式上略有不同。

相同点:他们所达到的最终目的相同都是先进后出结构,一端固定另一端浮动。

不同点:

1)缓存

栈采用一级缓存,处于存储空间中,调用完毕后释放空间 

堆采用二级缓存,声明周期垃圾回收决定 

2)释放

栈区(stack):编译器自动释放,生命周期随线程周期。

堆区(heap):由程序员分配释放,程序员释放或由os垃圾回收释放。

3)存放内容

栈:存放函数参数名、局部变量名(基本数据类型、调用对象等)。

堆:存放数组、对象(用new来创建对象如 new String(‘asd‘))。

4)性能

栈:速度快、内存大小固定好的、自由度小。

堆:速度慢、容易产生内存碎片、自由度大。

 

参考链接:

https://www.jianshu.com/p/c990427ca608

https://baike.baidu.com/item/%E5%A0%86%E6%A0%88/1682032?fr=aladdin

数据结构的深入理解

标签:拓展   asd   baidu   编译器   bsp   个人   数据   参考   add   

原文地址:https://www.cnblogs.com/wangdadada/p/12112554.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!