ky-1.线性表


一·逻辑结构

定义

线性表是具有相同特性数据元素的有限序列

二·存储结构

1.顺序存储结构

类似数组

2.链式存储结构

在这里插入图片描述

  1. 2种链式存储结构(单链表)
    在这里插入图片描述

  2. 2种链表的判空条件
    在这里插入图片描述

  3. ex:双链表和循环链表
    双链表:比单链表多一个前驱指针(prior)
    在这里插入图片描述
    在这里插入图片描述

三·插入删除

1.顺序表

插入:插入到目的位置,而不是“见缝插针”!*从后往前,大到小*
//先判断是否合法:
if(p<0 || p>length || length==maxsize)
	return 0;//非法

//从末尾往前遍历,到待插位置p结束,(i+1) = (i)
//元素处理,length++。
删除:*从前往后,小到大*,依次覆盖。
//先判断是否合法:
if(p<0 || p>length-1)
	return 0;
//待删除元素赋值
//从待删除位置p往后遍历,到末尾结束,(i) = (i+1)
//length--

2.链式表

插入:更改指针的指向。*先连后,再连前*
		双链表新节点先连2端节点,再断掉2端间的连接
s->next = p->next;
p->next = s;
删除:
p->next = s->next;
free(s);

四·元素移动次数和静态链表

在这里插入图片描述

1. 移动次数

1.1 插入移动次数
  1. 有 n+1 个插入位置
  2. 插入位置为 i (0~n) 时,需要移动 n-i
1.2 删除移动次数
  1. 有 n 个删除位置
  2. 删除位置为 i 时,需要移动 n-i-1

2. 静态链表

2.1 定义
为了简化链表结构,将指针变量改成 int 变量,其所指为下一节点在数组中的位置 。
由于一次性分配空间,所以该链表是静态的。
跟顺序表区分,顺序表内元素是连续的;静态链表中元素虽然物理上连续存储,逻辑可以不连续。
2.2 实现

在这里插入图片描述

//节点定义:
typedef struct
{
	int data;
	int next;
}SLNode;
//链表生成:
SLNode Slink[maxsize];
//常用操作:
int p = Ad0;
Slink[p].data;		//p->data
Slink[p].next;		//p->next

//插入:
Slink[q].next = Slink[p].next;
Slink[p].next = q;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值