- 注册时间
- 2005-11-2
- 最后登录
- 2022-4-27
⑥精研
....
- 积分
- 1766
|
发表于 2007-6-9 21:32:41
|
显示全部楼层
[s:5] 你现在做的就是个Vector,和链表不同的是,他是物理内存连续的,所以呢,你完全不需要任何的指针去记录下一个数据的地址,因为连续,所以允许你直接进行迭代器的++运算.就能找到下一个数据.
例如,内存保存是这样的 01 02 03 04... 所以,只要你找到了01,下一个地址一定是02,直接迭代指针++就可以找到下一个地址.
但是List本身物理内存地址不连续,所以其结构内必须保存下一个数据的地址.
例如,内存保存是这样的 01 XX XX ... ... XX 02 XX XX ... 03 ...
也就是说01之后,未必数据一定是02,可能是其他块的数据,所以,必须用->next指针去记录下一个数据的地址.
Stack是堆,和Queue队列对应的就是LIFO和FIFO了
意思就是说,Stack是L ast In First Out(后进先出),Queue对应的是First In First Out(先进先出).
怎么理解呢?先说队列吧,我们上公交车,要排队,现在上车了,按一般道理来说,就是先排队的先上车.
后来的自然是后进行处理,这就是队列,我们的插入是从队尾开始的,而真正数据调用时,则是从队首开始的,包括排序,查询,删除,全是从队首将数据一个一个取出,进行处理,再从队尾插入的.
Stack则正好相反,他可以想象为一个很窄死胡同,最先进入的人,是最后才能出来的,最后进入的人,可以第一个出来,这就是后进先出.
恩,详细的这东西,还是看专门的数据结构书吧,呵呵,我就自己的理解简单说了说,了解大概就好 [s:1] |
|