数据结构----线性表

本文详细介绍了线性表的特点、存储结构及其操作,包括顺序存储和链式存储。顺序表的插入和删除操作涉及到元素的移动,而链表则通过指针实现快速插入和删除。此外,还提到了循环链表的概念以及顺序表和链表在存取方式、逻辑结构和物理结构、基本操作和内存空间上的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构----线性表

王道考研数据结构线性表知识整理

1. 线性表特点

(1)表中元素个数有限
(2)表中元素具有逻辑上的顺序性,各元素排序有先后次序
(3)表中元素都是数据元素,每个元素都是单个元素
(4)表中元素的数据类型相同,每个元素的存储空间相同
(5)表中元素具有抽象性
(6)线性表是一种逻辑结构,表示元素之间一对一的相邻关系

2.线性表的存储结构:

(1)顺序存储:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构
(2)链式存储:逻辑上相邻的数据元素在物理上不一定相邻,通过指针来实现

3.顺序表的基本操作

(1)插入操作

for(int j=L.length;j>=i;i++){
	L.data[j]=L.data[j-1];
	L.data[i-1]=e;
	L.length++;
	}

(2)删除操作

for(int j=i;j<L.length;j++){
	L.data[j-1]=L.data[j];
	L.lenght--;
}

4.线性表的链式存储

一个数据元素称为一个结点,包括两个域:存储数据元素信息的域称为数据域;存储直接后继存储位置的域称为指针域。指针域中存储的信息称作指针或链
(1)单链表
1.插入

s->next=p->next;
p->next=s;

2.删除

q = p->next;           //首先保存b的指针,靠它才能找到c;
p->next=q->next;  //将a、c两结点相连,淘汰b结点;
free(q)//彻底释放b结点空间

(2)双链表
1.插入

s->next = p->next  ;   
p->next->prior = s ;
s->prior = p ; 
p->next = s ;

2.删除

p->next=q->next;
q->next->proir=p;
free(q);

5.循环链表

循环链表的操作和线性链表基本一致,差别仅在于算法中的循环条件不是p或p->next是否为空,而是它们是否等于头指针

6.顺序表和链表的区别

(1)存取方式
顺序表可以实现顺序存取和随机存取;单链表只能实现顺序存取。
(2)逻辑结构和物理结构
顺序表的逻辑结构相邻,物理结构也相邻;单链表的逻辑结构相邻,物理结构不一定相邻
(3)基本操作
1.插入&删除:顺序表为O(n)且需要大量移动元素;
单链表为O(1)(结点指针已知)、O(n)(结点指针未知),操作时要修改指针
2.查找:按值查找中单链表和顺序表(无序)为O(n);
按序查找中单链表为O(n),顺序表为O(1)
(4)内存空间
顺序存储:静态分配时预分配空间太大会浪费,太小会溢出;
动态分配时不会溢出但是需要大量移动元素,效率低
链式存储:在需要时分配节点空间即可,但指针要使用额外空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值