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

目录

用结构指针描述单链表

初始化链表

判断空表

销毁单链表

清空单链表

求单链表的表长

读取表中指定元素的值

按值查找

单链表中指定位置插入节点

单链表中删除指定位置节点

建立链表——头插法

建立链表——尾插法


  1. 用结构指针描述单链表

    typedef struct Node{ElemType data;// 数据域struct Node* Next; //指针域 } Node;typedef struct Node* LinkList//(相当于指向结点的指针)
  2. 初始化链表

    Status InitList(LinkList L){L=(LinkList)malloc(sizeof(Node));L-next=NULL;} 
  3. 判断空表

    int ListEmpty(LinkList L){if(L->next){return 0;}else{return 1;}} 
  4. 销毁单链表

    Status DestoryList(LinkList L){LinkList p;while(L){p=L;L=L->next;free(p);}return OK;} 
  5. 清空单链表

    Status ClearList(LinkList L) {LinkList p,q;p=L->next;while(p){q=p->next;free(p);p=q; }L-next=NULL;return OK;}
  6. 求单链表的表长

    int ListLength(LinkList L){LinkList p;int j=0;//计数器 p=L->next;while(p){p=p->next;j++;}return j;} 
  7. 读取表中指定元素的值

    Status GetElem(LinkList L,int i,Elemtype *e){int j=1;LinkList p;p=L->next;while(j<i&&p){p=p->next;j++;}while(j>i||p=NULL){return ERROR;}*e=p->data;return OK;} 
  8. 按值查找

    //返回找到值的指针 Lnode *LocateElem(LinkList L,Elemtype e ){p=L->next;for(p&&p->data!=e){p-p->next;}if(!p) return Error;return p;}//返回找到值的位置序号int  LocateElem(LinkList,Elemtype e){p=L->next;int j=1;while(p&&p->data!=e){p=p->next;j++;}if(!p) return 0;if(p) return j;}

    时间复杂度:O(n)

  9. 单链表中指定位置插入节点

    status InsertList(LinkList L,int i,Elemtype e){p=L->next;int j=1;while(p&&j<i-1){p=p->next;j++;}if(!p||i<j) return ERROR;LinkList s;s=(LinkList)malloc(sizeof(LNode));s->data=e; s->next=p->next;p->next=s;return OK;} 

    时间复杂度:O(n)

  10. 单链表中删除指定位置节点

    status DeleteList(LinkList L,int i,Elemtype e){LinkList p,q;p=L;int j=0;while(p->next&&j<i-1){p=p->next;j++;}if(!(p->next)||i=<j) return ERROR;q=p->next;p->next=p->next->next;free(q);return OK;} 

    时间复杂度:O(n)

  11. 建立链表——头插法

    void CreateList_H(LinkList L,int n){L=(LinkList)malloc(sizeof(LNode));L->next=NULL;int i;for(i=1;i<=n;i++){p=(LinkList)malloc(sizeof(LNode));scanf(&p->data);p->next=L->next;L->next=p;}}

    时间复杂度:O(n)

  12. 建立链表——尾插法

    void CreateList_T(LinkList L,int n){int i;L=(LinkList)malloc(sizeof(LNode));L->next=NULL;r=L;for(i=1;i<=n;i++){p=(LinkList)malloc(sizeof(LNode));scanf(&p->data);p->next=NULL;r->next=p;r=p; }} 

    时间复杂度:O(n)


    以上就是文章的全部内容了,针对以上内容我还会继续改进和完善,希望大家能多给我提一些建议哦!

2.2线性表——单链表基本操作的实现相关推荐

  1. python的线性链表_Python线性表——单链表-阿里云开发者社区

    Python线性表--单链表 线性表简介 线性表是一种线性结构,它是由零个或多个数据元素构成的有限序列.线性表的特征是在一个序列中,除了头尾元素,每个元素都有且只有一个直接前驱,有且只有一个直接后继, ...

  2. 数据结构_Java_基于 线性表-单链表的初始化、逆序、去重、非递减序列的合并(开辟新链表先整体插入一个链表全部元素,再遍历另外一个链表寻找合适位置插入 、开辟新链表实现舍弃原链表)等操作实现

    写在前面 不久前学习了数据结构线性表-数组-链表的相关知识,用C/C++语言实现了 单链表的系列相关操作 .见往期博客: 数据结构实验2_C语言_基于顺序表的非递减有序表的合并.线性表元素的增.删.改 ...

  3. 线性表(单链表)实验

    一.实验目的 1.线性表(LINE)的概念:数据元素之间存在着线性关系. 2.线性表的顺序表示和实现. 3.线性表的链式表示和实现. 4.线性表的基本操作:初始化.插入.修改.删除.遍历. 二.实验内 ...

  4. 理论基础 —— 线性表 —— 单链表

    [实现类] 单链表的基本思想就是用指针表示结点之间的逻辑关系,因此要正确的对指针变量.指针.指针所指结点.结点的值进行区分. 设 p 是一个指针变量,则 p 的值是一个指针,若指针 p 指向某个 No ...

  5. 第二章:2线性表---单链表表示和实现

    前言: 为避免在使用线性表顺序存储结构的时,需插入和删除需大量移动元素的弊端. 本节讨论线性表的另外一种表示方法---链式存储结构: 由于它不要求逻辑上相邻的元素在物理位置上相邻,因此它对元素的插入和 ...

  6. 线性表----单链表

    一,实验内容:链表的创建.插入与删除操作 二.程序清单 三.思考 l.如果需要将新结点 插入  到     第i个数据元素之后,算法将如何改动? 2. 双向链表和循环链表的定义和构造方法. //链表的 ...

  7. 线性单链表存储结构c语言代码,单链表定义-(线性表的链表存储结构)

    线性表分为:顺序存储结构和连存储结构 顺序存储结构的优点: 1.空间利用率高,几乎不需要额外的空间开销. 2.数据的逻辑结构和物理结构完全一致. 3.结点地址计算的时间和线性表的规模大小无关. 4.可 ...

  8. C语言单链表基本操作总结

    C语言单链表基本操作     本文是参考他人实现的C语言单链表,对多篇博文整理的结果,仅作为学习笔记.文末有参考出处. 1.单链表定义 链表是通过一组任意的存储单元来存储线性表中的数据元素,这些存储单 ...

  9. 数据结构-单链表基本操作-C语言代码

    单链表基本操作 1.头插法建立单链表 2.尾插法建立单链表 3.查找结点 3.修改结点 4.插入结点 5.删除结点 本篇只有c语言代码,具体思路讲解请看这篇博客:数据结构-线性结构-单链表 1.头插法 ...

最新文章

  1. css a 标签上下间距_CSS实用技能:去除inline-block元素间间距的7种方法
  2. Android之动态改变控件大小
  3. pythondifflib详解_用python标准库difflib比较两份文件的异同详解
  4. vue源码学习--vue源码学习入门
  5. 数据结构选择题(c语言)
  6. 第十期:过去50年间,十大热门语言及发明者大盘点
  7. VMware14.1 Ubuntu16.04设置xshell连接虚拟机
  8. 宝塔linux上传文件视频,使用宝塔linux面板上传文件 解压缩zip和tar.gz
  9. sqlplus 登录oracle 报ERROR: ORA-01034:ORACLE not available ORA-27101:shared memory realm does not exit
  10. 机器学习基石12-Nonlinear Transformation
  11. php 判断来访IP地址是国内还是国外的
  12. 【软件开发】【项目管理】项目管理那些事儿之那些权力
  13. 手机远程连接服务器工具:RD client远程桌面使用教程
  14. 一个好用的hibernate泛型dao
  15. PowerWeChat 微信SDK 介绍
  16. 打开catia界面全是白色怎么办_CATIA复合材料设计教程:1.软件安装
  17. 初识C语言,一起迈入编程世界的大门
  18. Java解析pmml格式机器学习模型
  19. 共享计算机型n4中n代表什么,n代表什么(n代表的所有含义)
  20. cad延伸命令怎么用_CAD拉伸怎么用

热门文章

  1. 算法提高 两条直线(二分法 + 枚举)
  2. php 储存数组,php将数组储存的方法总结
  3. 研究生宿舍大盘点!是谁留下了羡慕的泪水?
  4. 大写字母和小写字母转换
  5. 机器学习sklearn | sklearn简介
  6. 网络工程-04749-习题
  7. asp.net iframe html,ASP.NET中使用IFRAME建立类Modal窗口
  8. tensorflow实现resnet50(训练+测试+模型转换)
  9. 1386: 十转换转R进制
  10. 纯洁的微笑(springboot, springcloud学习)