数据结构—线性表的顺序表示与实现

计算机内部线性表存储方式:

1、顺序存储:顺序表

2、链式存储:链表

顺序表示是指:

用一组地址连续的存储单元依次存储线性表的数据元素;

过程分析:

假设线性表的每个数据元素需要占用x个存储单元,并以所占的第一个单元的存储地址作为数据元素起始的存储位置,因为使用一组连续的存储单元,所以下一个数据元素的位置就是当前首地址向后偏移x个单元即可,所以可以这样表示  

存储位置LOC(ai+1) = LOC(ai) + x;

 所以也就意味着如果我们要操作第6个元素,而一个数据元素的长度为x,所以我们所要找的第六个元素的地址就是起始位置向后偏移L = (6-1)* x;

相关操作代码实现:

1、保存数据结构的定义:

struct Data()

{

int nums;  //数据里面的元素组成(可以定成好多个);

};

struct list()

{

Data ListData[顺序表的最大长度+1]; // 保存顺序表的数组;

int ListLen;//顺序表已存节点数; 

};

list *lis = new list();

2、初始化顺序表:

void InitList(list *l)
{
    l->ListLen = 0;
}
3、顺序表长度
int LenList(list *l)
{
    return l->ListLen;
}
4、添加节点
int AddCode(list *l, Data data)
{
    if (l->ListLen >= Max)
        return 0;
    else
        l->ListData[++l->ListLen] = data;
    return 1;
}
5、插入节点
int Insert(list *l, int n, Data data)
{
    if (l->ListLen >= Max)
        return 0;
    if (n < 1 || n > l->ListLen-1)
         return 0;
    for (int i(l->ListLen); i >= n; --i)
        l->ListData[i+1] = l->ListData[i];
    l->ListData[n] = data;
    l->ListLen++;
    return 0;
}
6、删除节点
int Delete(list *l, int n)
{
    if (n < 1 || n > l->ListLen+1)
         return 0;
    for (int i(n); i < l->ListLen; ++i)
        l->ListData[i] = l->ListData[i+1];
    l->ListLen--;
    return 0;
}
7、通过序号查找
Data *FindByNum(list *l, int n)
{
    if (n < 1 || n > l->ListLen+1)
         return 0;
    return &(l->ListData[n]);
}
8、通过关键字查找
Data *FindByKey(list *l, char *key)
{
    for (int i(0); i <= l->ListLen; ++i)
        if (Strcmp(l->ListData[i].key, key) == 0)
            return i;
    return 0;
}
8、输出顺序表
void Show(list *l)
{
    for (int i(0); i <= l->ListLen; ++i)
       printf("%d\n", l->ListData[i].nums);
    return;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值