数据结构:链表(Linklist)的定义和它的函数们
数据结构:链表(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)的定义和它的函数们相关推荐
- python链表怎么定义_Python数据结构之双向链表的定义与使用方法示例
本文实例讲述了Python数据结构之双向链表的定义与使用方法.分享给大家供大家参考,具体如下: 和单链表类似,只不过是增加了一个指向前面一个元素的指针而已. 示意图: python 实现代码: #!/ ...
- Python中常用的数据结构---链表
Python中常用的数据结构-链表 常用的数据结构有数组.链表(一对一).栈和队列.哈希表.树(一对多).图(多对多)等结构. 在本目录下我们将讲解,通过python语言实现常用的数据结构. 2.链表 ...
- 用c语言实现链表数据保存,数据结构链表C语言实现.doc
数据结构链表C语言实现 数学与信息技术学院2016~2017(下)学年 计科专业2015级<数据结构>实验报告 2 学号:2015201018 姓名:汪继超 实验名称线性表的链式存储结构完 ...
- C++数据结构链表的基本操作
这篇文章主要为大家介绍了C++数据结构链表基本操作的示例过程有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪 首先创建好一个节点 typedef struct node {in ...
- c语言仓库管理系统链表,仓库管理系统 C语言 C++ 数据结构 链表 课程设计
仓库管理系统 C语言 C++ 数据结构 链表 课程设计 #include #include #include #include #define MAX 64 typedef struct node{ ...
- 数据结构 - 链表 - 面试中常见的链表算法题
数据结构 - 链表 - 面试中常见的链表算法题 数据结构是面试中必定考查的知识点,面试者需要掌握几种经典的数据结构:线性表(数组.链表).栈与队列.树(二叉树.二叉查找树.平衡二叉树.红黑树).图. ...
- Linux C 数据结构---链表(单向链表)
上一篇我们讲到了线性表,线性表就是数据元素都一一对应,除只有唯一的前驱,唯一的后继. 线性表存储结构分为顺序存储.链式存储. 顺序存储的优点: 顺序存储的缺点: 链表就是典 ...
- 数据结构链表之符号表,Python3实现——8
数据结构链表之符号表 符号表的介绍 之前章节介绍的顺序表和链表都是一个节点储存一个元素的表,但在日常生活中我们还有很多一次需要储存成对或多个值的情况,例如: 符号表最主要的目的将一对元素,用一个键和一 ...
- 数据结构链表之队列,Python3实现——7
数据结构链表之队列 队列概述 定义:队列是一种基于先进先出(FIFO)的数据结构,队列只能在一段进行插入和删除操作的结构,第一个进入队列的元素在读取时会第一个被读取 队列可以使用顺序表(Python中 ...
最新文章
- 记WinCE下调试SIM900 GSM module
- 在三台Redis节点上部署哨兵集群以及主备切换、故障恢复的容灾演练中哨兵各自的日志信息、状态查看分析
- java 中的2个接口 Comparable和Comparator
- Java虚拟机学习集锦是我攒来的,看这篇文章准没错!
- js list删除指定元素_vue.js
- 车辆销售系统用例_汽车销售管理系统UML建模分析.doc
- JRE和JDK的区别
- 在php内乱码如何动态的进行解决掉
- ZigBee Dotdot
- 世界上第一天微型计算机,day 1:计算机发展史和组成部分
- 跨境电商多商户系统怎么选
- 【软件设计】5本软件设计书籍的读书笔记
- java计算一个月有几周_java 如何获取 一个月 有多少周
- 如何将SVG图标转换为字体文件
- Linux 文本替换 字符串替换 221012笔记
- 一篇相当不错的js function详解 读了一定有收获
- 2022-2028年中国休闲食品行业市场调查研究及发展前景规划报告
- Windows7声卡驱动安装不上问题
- app-framework学习--pannel介绍
- SystemUI启动,及其SystemUIService启动