美文网首页
链表操作全总结

链表操作全总结

作者: 喜忧参半 | 来源:发表于2021-11-10 18:31 被阅读0次

第一章——概述

表结构:用来表示结点之间某种先后次序关系(属于线性关系),一个结点只有一个前驱和一个后继,但首结点没有前驱,尾结点没有后继。“一对一”关系
树结构:用来表示结点之间的层次关系、分支关系和嵌套关系,一个结点只有一个前驱(根结点没有前驱),但可以有多个后继。“一对多”关系
图结构:用来表示任何两个结点之间都可能有(或没有)关系。“多对多”关系
散结构:用来表示任何两个结点之间都没有关系,或者说存在一种特殊的关系——无关关系
从数学角度来讲,树结构和散结构都是图的特例,表结构又是树的特例。
算法定义三要素:有穷性、确定性、可行性。
算法正确性的含义:应当对所有输入数据都能给出正确的结果
在算法理论中,当T(n)≤0(n^d)( d是任意一个正的常数)时,就称“算法是多项式界的”,都属于“有效算法”。这里说的“有效”是指算法能在“有限时间内”完成;而若T(n)超过多项式,,就属于无效算法。
算法的运行效率主要指时间复杂性和空间复杂性。若一个算法的时间耗用函数T( n)满足T(n)≤cf(n),则记作T(n)= O(f(n))。有效算法和无效算法的分界线是T(n)是否在多项式范围内。就算法时间复杂性而言,最坏情况指的是T(n)=O(n²);平均情况指的是S(n)=O(n)。

第二章——表结构

①简单链表

当表为空时:head==NULL
在表头插入p所指结点:p->next=head;head=p;
在中间插入p所指结点:p->next=q->next;q->next=p;

②加头链表

当表为空时:head->next==NULL;
//加头链表在表头或表中插入是一样的
在表中插入p所指结点:p->next=head->next; head->next=p;
删除表头结点:p=head->next;head->next=p->next;free(p);

③加尾链表

判空条件:head==NULL;
在表尾插入p所指结点:
last->data=p->data;p->next=NULL,last->next=p,last=p;

④单向循环链表

判空条件:head==NULL;
表头插入p所指结点:p->next=head;head=p;rear->next=p;
删除表头结点:head=head->next;rear->next=head;
//rear代表最后一个结点

⑤单向加头循环链表

判空条件:head->next=head;
表头插入p所指结点:p->next=head->next;head->next=p;
删除表头结点:
head->next=head->next->next; rear->next=head->next;

⑥双向简单链表

判空条件:head->next=NULL;
插入分为三种情况:
表头插入:
p->Rlink=head;p->Llink=NULL;
head->Rlink->Llink=p;head=p;
表中插入:
p->Rlink=q->Rlink;p->Llink=q;
q->Rlink->Llink=p;q->Rlink=p;
表尾插入:
p->Rlink=q->Rlink;p->Link=q;
q->Rlink->Llink=p;q->Rlink=p;

⑦双向循环链表

判空条件:head==NULL;
//表中插入与双向链表一致
p->Rlink=q->Rlink;p->Llink=q;
q->Rlink->Llink=p;q->Rlink=p;

⑧双向加头循环链表

判空条件:head->next=head或head->Rlink=head->Llink
//表中插入与双向链表一致
p->Rlink=q->Rlink;p->Llink=q;
q->Rlink->Llink=p;q->Rlink=p;

⑨静态链表

相关文章

  • 链表相关

    总结一下链表相关的操作 单链表节点的定义 实现单向链表的反向 删除单链表的所有节点

  • [数据结构]第二章线性表(4)——双链表

    双链表 单链表VS双链表 双链表基本操作 初始化 插入 优化之后 删除 遍历 总结反思 源码 源码查看地址,点击 ...

  • [数据结构]第二章线性表(6)——静态链表

    静态链表 什么是静态链表? 定义一个静态链表 方法1: 方法2: 验证方法2的定义方法 基本操作 总结反思 源码 ...

  • 链表操作全总结

    第一章——概述 :用来表示结点之间某种先后次序关系(属于线性关系),一个结点只有一个前驱和一个后继,但首结点没有前...

  • 前端校招准备系列--js实现链表的基本操作

    自己总结了一下链表的基本操作的实现,文末还有几道简单的算法题可供练习! 前端校招准备系列--使用js实现链表的操作...

  • 删除链表中重复的元素解法分析

    链表的操作非常常见,也是面试中经常会被问道的问题。对于链表重复元素的删除,有两个变体,现在总结如下。链表代码如下:...

  • Java双向链表

    链表节点 链表操作

  • Java环形单向链表

    链表节点 链表操作

  • 链表

    文章结构 链表的定义 链表的插入和删除操作 链表的特性 常见的链表结构 自定义链表 链表的经典操作 使用链表实现L...

  • 线性表的链式存储-单链表

    单链表操作 [x] 单链表的创建(尾插法、头插法) [x] 单链表的查找操作 [x] 单链表的删除操作 [x] 单...

网友评论

      本文标题:链表操作全总结

      本文链接:https://www.haomeiwen.com/subject/zywbzltx.html