顺序存储结构的线性表中,有一个显著的缺陷是:增加或删除元素时,要移动大量数据(平均移动n/2次),当每个元素占用的空间较大时,效率很低。间接寻址就是解决此问题的一种方案。
间接寻址的思想是:在顺序存储结构的基础上,每个元素存储数据的地址,增加或删除时只需移动地址,当元素很大且表长度很大时,效率的提升将很可观。
C++语言的代码实现如下:
/**
* 基于间接寻址的顺序存储结构线性表
*/
#pragma once
template < class T >
class List
{
public:
List(int c = 10);
~List(void);
int getLength();
int getCapacity();
bool isEmpty();
T getData(int index);
void addData(T t);
void addData(T t, int index);
T deleteData(int index);
void clear();
void print();
private:
int len;
int capacity;
T **data;
void ready();
void arrayCopy(T **dst, int dstStart, T **src, int srcStart, int n);
};
template < class T >
List< T >::List(int c)
{
capacity = (c >= 0 ? c : 0);
len = 0;
if (capacity > 0)
{
data = new