【数据结构】线性表——元素移动次数计算和静态链表

顺序表插入元素

● 在任一位置插入元素的概率为 p = 1 n + 1 p=\frac{1}{n+1} p=n+11
● 在 i i i位置( i i i的取值: [ 0 , n ] [0, n] [0,n])之前插入元素,需要移动 ( n − i ) (n-i) (ni)个元素
● 插入元素平均要移动的元素个数为 n 2 = ( 0 + n ) ( n + 1 ) 2 ∗ p \frac{n}{2}=\frac{(0+n)(n+1)}{2}*p 2n=2(0+n)(n+1)p

插入位置元素移动个数
0n
1n-1
n0

顺序表删除元素

● 在任一位置删除元素的概率为 p = 1 n p=\frac{1}{n} p=n1
● 在 i i i位置( i i i的取值: [ 0 , n − 1 ] [0, n-1] [0,n1])之前插入元素,需要移动 ( n − i − 1 ) (n-i-1) (ni1)个元素
● 删除元素平均要移动的元素个数为 n − 1 2 \frac{n-1}{2} 2n1

移动次数计算与静态链表

静态链表使用数组存储,模拟真正的链表
节点类型定义

typedef struct
{
	int data;
	int next; //记录下一个节点是谁
}SLNode;

在这里插入图片描述

SLNode SLink[maxSize];	//建表
int p = Ad0; 			//定义一个指针
SLink[p].data;			//取p指针指向的节点值,类比p->data
SLink[p].next;			//取p后继节点指针,类比p->next

//在p后插入节点q
SLink[q].next = SLink[p].next;
SLink[p].next = SLink[q];
//类比q->next = p->next; p->next = q;
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值