线性表-链表 (未完)

一、相关知识点

1.单链表:

(1)头插法建立
读入数据的顺序与生成的链表中的元素顺序相反。
每个点插入O(1),n个点总复杂度O(n)

s->data=x;
s->next=head->next;
head->next=s;

(2)尾插法建立
顺序相同
总复杂度O(n)

s->data=x;
r->next=s;
r=s;

(3)按序号查找节点值/按值查找节点
复杂度O(n)
(4)插入
查找复杂度O(n),插入复杂度O(1)

p=list.GetElem(i-1);
s-next=p->next;
p->next=s;

扩展:将前插(s插到p之前)转化为后插(交换数据域)

s->next=p->next;
p->next=s;
temp=p->data;  //交换数据域
p->data=s->data;
s->data=temp;

(5)删除
O(n)

p=list.GetElem(i-1);
q=p->next;
p->next=q->next;
delete q;

2.双链表
(1)插入

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

(2)删除

p->next=q->next;
q->next->prior=p;
delete q;

3.循环链表
(1)循环单链表
尾指针r,r->next头指针
(2)循环双链表
循环双链表为空表时,其头节点的prior和next都等于head
4.静态链表
指针指的是数组下标(游标)
next==-1结束

二、题目

1.链式存储结构比顺序存储结构能更方便的表示各种逻辑结构

2.给定n个元素的一维数组,建立一个有序单链表的最低时间复杂度为?
答案: O ( n log ⁡ 2 n ) O(n\log_2n) O(nlog2n)
先对数组排序,再建表(O(n))
3.一个链表最常用的操作是在末尾插入和删除,则选用带头结点的双循环链表最节省时间

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值