博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法与数据结构1800题 之线性表 (三)
阅读量:7113 次
发布时间:2019-06-28

本文共 1254 字,大约阅读时间需要 4 分钟。

n-i

顺序

顺序表,复杂度为O(n)
链表,复杂度为O(1)

如果是直接插入的话,是无法做到的,因为不知道p节点的前序指针,
但是可以通过:现将s节点插入到p节点的后面,然后再交换p节点与s节点的数据的方式来实现"插入"
即: s->next = p->next;
p->next = s;
s->data <--> p->data

L->next = L->prior = L

带有头结点的双向循环链表L为空标的条件是: L的next 和 prior都为L

q = p->next;
free(q);
py->next = px -> next;
px->next = py;

L -> next -> next = L && L->next != L
L -> next != L,是为了防止出现只有一个头结点的情况
O(1)
在值为x的节点之后插入节点,需要找到值为x的节点,时间复杂度为O(n),然后插入节点,时间复杂度为O(1)

单链表,双链表
根据指针的连接方式,将链表分为:动态链表,静态链表

f->next = p->next;
f->prior = p;
p->next->prior = f;
p->next = f;

指针

节点在物理存储上的相邻关系
4(待插入节点的两个指针也计算在内) , 2(待插入节点的一个指针也计算在内)
从任意节点出发,都能访问到链表的全部元素
L->next->next == L && L->prior->prior == L && L ->next != L
p->next != null

L->next == L && L->prior == L
将链表listb连接在lista的尾部, for循环的作用是将p指向lista的最后一个节点
BEI
FHDA

视频讲解连接:https://www.bilibili.com/video/av843754?from=search&seid=16128174079900509637
链表的反转:

p->next->next == L
相邻元素相比较,逆序交换,算法结束时,最大元素调整到链表的末尾
12 7 10 5 9 15

重点在于: 不是将h节点当做循环指针,而是将h->next节点当做循环的指针
h->next节点,p节点,q节点,三个指针实现了反转,最后同样形成了一个带有头结点的链表

q指针的作用就是始终指向pa节点的前序节点,仅仅是为了在遇到常数的时候,删除pa节点用的,因为这个时候,需要调用free(pa),就需要知道前序节点,而对于正常的情况(求导之前不为0),是不需要pa的
题中说了头结点,就一定有头结点,而且头指针一定指向头结点,头结点是没有数据的,本题为循环链表,有头结点,所以第一个数据从头结点的下一个节点开始,且while循环的终止条件为,当pa != 头结点

转载于:https://juejin.im/post/5b683a7e5188251b3a1dee88

你可能感兴趣的文章
hmac检验客户端合法性
查看>>
python-webbrowser模块 浏览器操作
查看>>
map侧连接
查看>>
数据库---数据库查询的各种子句
查看>>
vue+Mint-ui实现登录注册
查看>>
asp.net记住我功能
查看>>
[java web]Idea+maven+spring4+hibernate5+struts2整合过程
查看>>
Mybatis多参数
查看>>
[LibreOJ #2341]【WC2018】即时战略【交互】【LCT】
查看>>
【评分】BETA 版冲刺前准备
查看>>
scala快速一览
查看>>
二维码生成原理
查看>>
ARC机制
查看>>
完成登录与注册页面的前端
查看>>
Java二十三设计模式之------中介者模式
查看>>
电子商城实录------项目目录的结构搭建及其说明3
查看>>
wget命令详解
查看>>
note_简单的数据绑定
查看>>
A Course on Borel Sets Exercise 1.3.3
查看>>
陶哲轩实分析 习题10.2.7 导函数有界的函数一致连续
查看>>