C间接寻址法实现表代码,主函数调用
将原来数组存储元素的地方存放 为指向元素的指针,通过元素的指针间接的访问元素,故又称间接寻址法。其在添加元素和删除元素时移动的数组元素从可能占用空间很庞大的元素变成指向元素的指针(相对来说指针大小固定,在每一个元素占用存储空间较大时,指针移动更快些)。
间接寻址法优化重点是数组增加和删除时移动的是指向元素的指针,而不是元素本身。
即操作的其实是一个指针数组,其中每一个数组元素是指向表元素的指针。
#include <stdio.h>
#include <stdlib.h>
typedef int ListItem;
typedef ListItem *addr;
#define eq(A, B) (A == B)
typedef struct indlist *List;
typedef struct indlist
{
int n,
curr;
int maxsize;
addr *table;
} indlist;
addr NewNode()
{
return (addr)malloc(sizeof(addr));
}
List ListInit(int size);
int ListEmpty(List L);
int ListLength(List L);
ListItem ListRetrieve(int k, List L);
int ListLocate(ListItem x, List L);
void ListInsert(int k, ListItem x, List L);