数据结构:链表(Linklist)的定义和它的函数们

链表的定义:

  • 对整体的定义(相当于一个大括号,保存一头一尾的指针)
#define MAXSIZE 100
typedef char ElemType;
typedef struct _list
{ElemType* head;ElemType* tail;
}List;
  • 对结点的定义
typedef struct _node
{int index;                 //链表索引ELemType data;                //节点中的数据struct _node* next;         //链接下一个结点
}Node;

链表初始化:(先弄一个结点)

void InitLinklist(List* plist)
{plist->head = (Node*)malloc(sizeof(Node));     //链表头指向首结点if(!plist->head)   exit(0);                    //判断是否成功开辟plist->tail = plist->head;                     //链表尾部指向头部plist->head->next = NULL;                      //第一个结点的next指向NULL
}

链表结点的添加:

void add(List* plist)
{static int index = 1;                     //索引作为静态变量Node* p = (Node*)malloc(sizeof(Node));       //开辟一个结点p->index = index++;                           //记作第index个结点p->next = NULL;if(!plist->head)  plist->head = p;           //如果没有结点,p就作为头结点else{Node* pp = plist->head;                 //用一个指针去找最后一个结点while(pp->next) pp = pp->next;            //直到pp为最后一个结点pp->next = p;                          //把最后一个结点的next指向pplist->tail = p;                       //链表尾结点更新为p;}
}

链表的删、查、改等功能:

比较懒,哪天兴致来了再写吧orz

BBBBBut!

  • 核心思想不会变:

就是用一个结构体指针去找index或者data(有时候要用另外一个指针记录prev上一个结构体)

其实感觉就是和数组一样:

  • 数组中的删比较麻烦,因为找到之后需要移动一部分的数据,把空位填充;然而链表就不一样了,就和链子一样,中间的断开取下一截,然后把两边连到一起就是了(这可能就是它叫做链表的原因吧,就和链子一样)

  • 查和改都是差不多,用for循环遍历加检测。只是在数组中,我们是用

    for(int i = 0 ; i < n ; i++)

  • 然而在链表中,我们就是用

    Node* ptr;
    for (ptr = list.head ; ptr && ptr->data != key ; ptr = ptr->next );
    
  • 这时候出来若是NULL则是未找到,否则就找到且ptr指向了那个结点

    两者味道其实差不多~

数据结构:链表(Linklist)的定义和它的函数们相关推荐

  1. python链表怎么定义_Python数据结构之双向链表的定义与使用方法示例

    本文实例讲述了Python数据结构之双向链表的定义与使用方法.分享给大家供大家参考,具体如下: 和单链表类似,只不过是增加了一个指向前面一个元素的指针而已. 示意图: python 实现代码: #!/ ...

  2. Python中常用的数据结构---链表

    Python中常用的数据结构-链表 常用的数据结构有数组.链表(一对一).栈和队列.哈希表.树(一对多).图(多对多)等结构. 在本目录下我们将讲解,通过python语言实现常用的数据结构. 2.链表 ...

  3. 用c语言实现链表数据保存,数据结构链表C语言实现.doc

    数据结构链表C语言实现 数学与信息技术学院2016~2017(下)学年 计科专业2015级<数据结构>实验报告 2 学号:2015201018 姓名:汪继超 实验名称线性表的链式存储结构完 ...

  4. C++数据结构链表的基本操作

    这篇文章主要为大家介绍了C++数据结构链表基本操作的示例过程有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪 首先创建好一个节点 typedef struct node {in ...

  5. c语言仓库管理系统链表,仓库管理系统 C语言 C++ 数据结构 链表 课程设计

    仓库管理系统 C语言 C++ 数据结构 链表 课程设计 #include #include #include #include #define MAX 64 typedef struct node{ ...

  6. 数据结构 - 链表 - 面试中常见的链表算法题

    数据结构 - 链表 - 面试中常见的链表算法题 数据结构是面试中必定考查的知识点,面试者需要掌握几种经典的数据结构:线性表(数组.链表).栈与队列.树(二叉树.二叉查找树.平衡二叉树.红黑树).图. ...

  7. Linux C 数据结构---链表(单向链表)

    上一篇我们讲到了线性表,线性表就是数据元素都一一对应,除只有唯一的前驱,唯一的后继. 线性表存储结构分为顺序存储.链式存储.        顺序存储的优点: 顺序存储的缺点:        链表就是典 ...

  8. 数据结构链表之符号表,Python3实现——8

    数据结构链表之符号表 符号表的介绍 之前章节介绍的顺序表和链表都是一个节点储存一个元素的表,但在日常生活中我们还有很多一次需要储存成对或多个值的情况,例如: 符号表最主要的目的将一对元素,用一个键和一 ...

  9. 数据结构链表之队列,Python3实现——7

    数据结构链表之队列 队列概述 定义:队列是一种基于先进先出(FIFO)的数据结构,队列只能在一段进行插入和删除操作的结构,第一个进入队列的元素在读取时会第一个被读取 队列可以使用顺序表(Python中 ...

最新文章

  1. 记WinCE下调试SIM900 GSM module
  2. 在三台Redis节点上部署哨兵集群以及主备切换、故障恢复的容灾演练中哨兵各自的日志信息、状态查看分析
  3. java 中的2个接口 Comparable和Comparator
  4. Java虚拟机学习集锦是我攒来的,看这篇文章准没错!
  5. js list删除指定元素_vue.js
  6. 车辆销售系统用例_汽车销售管理系统UML建模分析.doc
  7. JRE和JDK的区别
  8. 在php内乱码如何动态的进行解决掉
  9. ZigBee Dotdot
  10. 世界上第一天微型计算机,day 1:计算机发展史和组成部分
  11. 跨境电商多商户系统怎么选
  12. 【软件设计】5本软件设计书籍的读书笔记
  13. java计算一个月有几周_java 如何获取 一个月 有多少周
  14. 如何将SVG图标转换为字体文件
  15. Linux 文本替换 字符串替换 221012笔记
  16. 一篇相当不错的js function详解 读了一定有收获
  17. 2022-2028年中国休闲食品行业市场调查研究及发展前景规划报告
  18. Windows7声卡驱动安装不上问题
  19. app-framework学习--pannel介绍
  20. SystemUI启动,及其SystemUIService启动

热门文章

  1. 推荐一款免费开源的代码质量分析工具
  2. 新加坡区块链公司架构问题,我们知多少?
  3. likou654最大二叉树
  4. matlab strel函数用法
  5. linux --压缩xz
  6. 使用springboot和freemarker导出word带图片
  7. 归并排序、快速排序、二路快排、三路快排python实现
  8. 2020交友聊天PHP代码 社交网络网站源代码 聊天即时通源代码送APP源码
  9. 第16集 ​关系代名词
  10. 乘法逆元的三种求解方法