数据结构之线性表

线性表是数据结构重要的一种。被称为线性表一般得满足以下四个条件:

a、存在唯一的一个“第一个”元素

b、存在唯一的一个"最后一个"元素

c、存在唯一前驱(除去第一个元素)

d、存在唯一后继(除去最后一个元素)

一般由两种表示和实现。线性表示实现以及链式表示实现。

1、顺序表示与链式表示的异同

顺序表示一般都以计算机中的“物理位置”相邻来表示数据元素之间的逻辑关系。这和链式表示由很大的不同,由于链式表示采用指针指定下一个元素的位置,所以它的的数据元素知识逻辑上相邻,在计算机的物理位置上面没有一定的关系,这同时也决定了顺序表示可以随机存取,而链式表示不能随机存取的特点。

由于高级语言中的数组也有随机存取的特点,所以通常用数组来描述数据结构中的顺序表示。

2、顺序表示存储结构

#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct{
    int *elem; //数据元素
    int length; //表长度
    int listsize; //表容量
}SqList;

顺序表示方式涉及的算法主要是插入和删除

插入:在第i个元素之前插入数据

a、判断插入点是否合法

b、判断容量是否已经满,如果满了,则重新分配内存

c、检查是否分配成功

d、插入数据,移动位置

删除:删除顺序线性表中的第i个元素

a、判断删除位置是否合法

b、定位到第i个元素

c、将i之后的元素向前移位,并修改表的长度(注意:如果需要记录删除的元素,需要在循环移位之前记录下它的值)



  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值