background image

C/C++数组作链表

一般传统链表的物理结构,是由指针把一个一个的节点相互连接而成:

1

struct 

node 

2 { 
3 DataType data; 
4 node* 

previous; 

5 node* 

next; 

6 }

其特点是按需分配节点,灵活动态增长。

但是此外,还有另外一种方式是使用数组实现链表,这里所有的  node  都在预
先分配好的数组中,不使用指针,而是用数组下标来指向前一个、下一个元素:

1

struct 

node 

2 { 
3 DataType 

data; 

4

int

 previous; 

5

int

 next; 

6 }

其特点是预先分配节点,并且如果需要链表长度随需增加,需要  reallocation 
,和  vector  类似。

下面就我自己的一些了解,谈一下其优缺点与应用。

数组作链表有哪些优点

能要省些内存吗?不见得;速度要快吗?没看出来,那么为什么要使用这种

 

不那么直观的方式来实现链表呢?

 

数组的内存布局比较紧凑,能占些局部性原理的光