2.3线性表——循环链表和双向链表基本操作的实现
注意:以下内容均省略思路,只有代码和时间复杂度。此内容为本人学习过程中的一些学习记录,如有错误,恳请各位指正、建议,末学将感激不尽!
目录
1.两个循环链表的合并
2.双向链表的结构定义
3.双向链表结构的对称性
4.双向链表的插入
5.双向链表的删除
1.两个循环链表的合并
LinkList Connect(LinkList Ta,LinkList Tb)//Ta和Tb是两个尾指针
{p=Ta->next;//标记头结点 Ta->next=Tb->next->next;//a表尾连b表头free(Tb->next);//释放b头结点Tb->next=p; return Tb;
}
注意:这里的两个循环链表均带有尾指针
时间复杂度:O(1)
2.双向链表的结构定义
tpyedef struct DuLNode{Elemtpye data;struct DuLNode *prior,*next;
} DuLNode,*DuLinkList;
3.双向链表结构的对称性
p->next->prior=p=p->prior->next
此性质是双向链表结构的特性,对于双向链表操作的表示与实现尤为重要哦!
4.双向链表的插入
Status DuListInsert(DuLinkList L,int i,Elemtpye e)
{int j=1;DuLinkList p;p=L->next;p->prior=L;while(p&&i>j){p=p->next;j++;}if(!p||i<j) return ERROR;DuLinkList s;s=(DuLinkList)malloc(sizeof(DuLNode));s->data=e;s->prior=p->prior;p->prior->next=s;p->prior=s;s->next=p;return OK;
}
注意:这是是在第i个元素之前插入
时间复杂度:O(n)
5.双向链表的删除
Status DuListInsert(DuLinkList &L,int i,Elemtpye &e)
{int j=1;DuLinkList p;p=L->next;p->prior=L;while(p&&i>j){p=p->next;j++;}if(!p||i<j) return ERROR;e=p->data;p->prior->next=p->next;p->next->prior=p->prior;free(p);return OK;
}
时间复杂度:O(n)
对于C/C++语言中的&(引用符号)的说明与作用,我推荐大家通过以下内容了解:
C 语言笔记 —— 函数参数带 & 和不带 & 的区别
以上就是文章的全部内容了,针对以上内容我还会继续改进和完善,希望大家能多给我提一些建议哦!
2.3线性表——循环链表和双向链表基本操作的实现相关推荐
- 数据结构(C语言)——线性表(定义,基本操作)
数据结构(C语言)--线性表(定义,基本操作) 一. 线性表的定义 二.线性表的基本操作 什么时候要传入引用"==&=="----对参数的修改结果需要"==带回来 ...
- 线性表:6.双向链表,可构成双向循环链表和C语言实现
之前接触到的链表都只有一个指针,指向直接后继,整个链表只能单方向从表头访问到表尾,这种结构的链表统称为 "单向链表"或"单链表". 如果算法中需要频繁地找某结点 ...
- 2.1 线性表的定义和基本操作
目录 思维导图 线性表的定义 线性表的基本操作 思维导图 数据结构的三要素:逻辑结构.数据的运算.存储结构. 线性表的定义 线性表的基本操作
- 线性表----循环链表和静态链表
1.循环链表 1.1 循环单链表 循环单链表和单链表的区别在于,表中最后一个结点指针不在是null,而是头指针,从而使整个链表形成一个环 此时判断单链表是否为空,条件就是头结点的指针是否等于头指针 此 ...
- (王道408考研数据结构)第二章线性表-第一节:线性表的定义和基本操作
文章目录 一:线性表的定义 二:线性表的基本操作 一:线性表的定义 线性表(Linear List):零个或多个数据元素的有限序列 元素之间是有顺序的 若元素存在多个,则第一个元素无前驱,最后一个元素 ...
- 脚踏实地《数据结构第二章》第一节:线性表的定义和基本操作
考点分析 一:线性表的定义(数据结构三要素–逻辑结构) 定义:线性表是具有相同数据类型的n(n>0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表. 相同:每个数据元素所占空间一 ...
- 线性表之单链表基本操作
单链表的定义 线性表的链式存储又称单链表,它是指通过一组任意的存储单元来存储线性表中的数据元素.为了建立数据元素之间的线性关系,对每个链表结点,除存放元素自身的信息外,还需要存放一个指向其后继的指针. ...
- 线性表的创建和基本操作
&&逻辑与 ||逻辑或 线性表是最基本.最简单.也是最常用的一种数据结构. 线性表结构中,数据元素之间通过一对一首位相接的方式连接起来. 具体实现时,线性表可 以采用不同的存储策略. ...
- 线性表:链表的基本操作
线性表的链式存储方式: 用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的).因此,为了表示每个数据元素与其后继元素的逻辑关系,除了本身数据信息之外,还需要存储一个指 ...
最新文章
- Web压力测试系统 nGrinder
- CLR查找和加载程序集的方式(二) 流程图
- yii2 关掉php notice,yii2关闭错误提示
- 用memcached实现session共享
- iBATIS存储过程
- matlab 红黑强度图片,matlab图形锐化程序
- 当array_filter函数的callback留空时 他会过滤掉所有键值为false的键
- 企业要做有价值的私域流量三大关键
- Exp6 信息收集与漏洞扫描
- 为什么做网站一般不用服务端控件?
- 46.Android 自己定义Dialog
- C# List;数组[] 转 List 和 List 拼接
- 《Python黑帽子:黑客与渗透测试编程之道》读书笔记(六):基于github的木马
- 笨方法学python 习题23
- 2020定额招投标报价评审办法及案例分享交流会圆满结束
- 如何采用SMW0存储模板和OLED操作Excel的方式生成Excel单据
- Android JS交互-记录我所遇到的
- d3.js之中国地图
- 【图文讲解】映射——单射-双射-满射概念
- 【机器学习】李宏毅 - 02 回归
热门文章
- 文献综述--------山东某地区基于深度学习神经网络的配电网负荷预测研究
- QR分解以及最小二乘求解
- householder变换QR分解QR方法
- 【2023 · CANN训练营第一季】初识新一代开发者套件 Atlas 200I DK A2---介绍Atlas 200I DK A2的基本使用
- 南大计算机专业考研2019分数,2021南京大学研究生分数线是多少
- 经典管理定理二十三条
- libhdfs 的C API
- fmcw matlab仿真,干货 | 利用MATLAB实现FMCW雷达的角度估计
- 计算机主机五大部件是什么,计算机硬件主要包括:主机、键盘、显示器、鼠标器和打印机五大部件...
- 电商行业:全链路监测广告投放效果,用数据驱动业务增长