注意:以下内容均省略思路,只有代码和时间复杂度。此内容为本人学习过程中的一些学习记录,如有错误,恳请各位指正、建议,末学将感激不尽!

目录

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线性表——循环链表和双向链表基本操作的实现相关推荐

  1. 数据结构(C语言)——线性表(定义,基本操作)

    数据结构(C语言)--线性表(定义,基本操作) 一. 线性表的定义 二.线性表的基本操作 什么时候要传入引用"==&=="----对参数的修改结果需要"==带回来 ...

  2. 线性表:6.双向链表,可构成双向循环链表和C语言实现

    之前接触到的链表都只有一个指针,指向直接后继,整个链表只能单方向从表头访问到表尾,这种结构的链表统称为 "单向链表"或"单链表". 如果算法中需要频繁地找某结点 ...

  3. 2.1 线性表的定义和基本操作

    目录 思维导图 线性表的定义 线性表的基本操作 思维导图 数据结构的三要素:逻辑结构.数据的运算.存储结构. 线性表的定义 线性表的基本操作

  4. 线性表----循环链表和静态链表

    1.循环链表 1.1 循环单链表 循环单链表和单链表的区别在于,表中最后一个结点指针不在是null,而是头指针,从而使整个链表形成一个环 此时判断单链表是否为空,条件就是头结点的指针是否等于头指针 此 ...

  5. (王道408考研数据结构)第二章线性表-第一节:线性表的定义和基本操作

    文章目录 一:线性表的定义 二:线性表的基本操作 一:线性表的定义 线性表(Linear List):零个或多个数据元素的有限序列 元素之间是有顺序的 若元素存在多个,则第一个元素无前驱,最后一个元素 ...

  6. 脚踏实地《数据结构第二章》第一节:线性表的定义和基本操作

    考点分析 一:线性表的定义(数据结构三要素–逻辑结构) 定义:线性表是具有相同数据类型的n(n>0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表. 相同:每个数据元素所占空间一 ...

  7. 线性表之单链表基本操作

    单链表的定义 线性表的链式存储又称单链表,它是指通过一组任意的存储单元来存储线性表中的数据元素.为了建立数据元素之间的线性关系,对每个链表结点,除存放元素自身的信息外,还需要存放一个指向其后继的指针. ...

  8. 线性表的创建和基本操作

    &&逻辑与 ||逻辑或 线性表是最基本.最简单.也是最常用的一种数据结构. 线性表结构中,数据元素之间通过一对一首位相接的方式连接起来. 具体实现时,线性表可 以采用不同的存储策略. ...

  9. 线性表:链表的基本操作

    线性表的链式存储方式: 用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的).因此,为了表示每个数据元素与其后继元素的逻辑关系,除了本身数据信息之外,还需要存储一个指 ...

最新文章

  1. Web压力测试系统 nGrinder
  2. CLR查找和加载程序集的方式(二) 流程图
  3. yii2 关掉php notice,yii2关闭错误提示
  4. 用memcached实现session共享
  5. iBATIS存储过程
  6. matlab 红黑强度图片,matlab图形锐化程序
  7. 当array_filter函数的callback留空时 他会过滤掉所有键值为false的键
  8. 企业要做有价值的私域流量三大关键
  9. Exp6 信息收集与漏洞扫描
  10. 为什么做网站一般不用服务端控件?
  11. 46.Android 自己定义Dialog
  12. C# List;数组[] 转 List 和 List 拼接
  13. 《Python黑帽子:黑客与渗透测试编程之道》读书笔记(六):基于github的木马
  14. 笨方法学python 习题23
  15. 2020定额招投标报价评审办法及案例分享交流会圆满结束
  16. 如何采用SMW0存储模板和OLED操作Excel的方式生成Excel单据
  17. Android JS交互-记录我所遇到的
  18. d3.js之中国地图
  19. 【图文讲解】映射——单射-双射-满射概念
  20. 【机器学习】李宏毅 - 02 回归

热门文章

  1. 文献综述--------山东某地区基于深度学习神经网络的配电网负荷预测研究
  2. QR分解以及最小二乘求解
  3. householder变换QR分解QR方法
  4. 【2023 · CANN训练营第一季】初识新一代开发者套件 Atlas 200I DK A2---介绍Atlas 200I DK A2的基本使用
  5. 南大计算机专业考研2019分数,2021南京大学研究生分数线是多少
  6. 经典管理定理二十三条
  7. libhdfs 的C API
  8. fmcw matlab仿真,干货 | 利用MATLAB实现FMCW雷达的角度估计
  9. 计算机主机五大部件是什么,计算机硬件主要包括:主机、键盘、显示器、鼠标器和打印机五大部件...
  10. 电商行业:全链路监测广告投放效果,用数据驱动业务增长