C间接寻址法实现表代码,主函数调用

C间接寻址法实现表代码,主函数调用

将原来数组存储元素的地方存放 为指向元素的指针,通过元素的指针间接的访问元素,故又称间接寻址法。其在添加元素和删除元素时移动的数组元素从可能占用空间很庞大的元素变成指向元素的指针(相对来说指针大小固定,在每一个元素占用存储空间较大时,指针移动更快些)。

间接寻址法优化重点是数组增加和删除时移动的是指向元素的指针,而不是元素本身。

即操作的其实是一个指针数组,其中每一个数组元素是指向表元素的指针。

#include <stdio.h>
#include <stdlib.h>       // malloc
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);                     // 表L的长度
ListItem ListRetrieve(int k, List L);       // 返回表L位置k的元素
int ListLocate(ListItem x, List L);         // 元素x在表L的位置
void ListInsert(int k, ListItem x, List L); // 在表L索引k的位置插入元素x
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值