数据结构(08)— 线性单链表基本操作
1. 线性单链表数据结构
// 假定每个结点的类型用 SNode 表示
typedef struct SNodeTag
{int data; // 所存储的数据元素SNodeTag *next; // 存储后续元素的指针域
}SNode;
2. 带头结点单链表的基本运算
2.1 置空表
void setnull(SNode *&h) // h 为引用型指针
{h = new SNode; // 创建一个头结点h->next = NULL;
}
2.2 获取长度
int lenth(SNode *h)
{int len = 0;SNode *q = h->next;while (!q) // or q != NULL{len++;q = q->next;}return len;
}
2.3 获取单链表 第 i 个结点的地址
SNode * get(SNode *h, int i)
{if(i < 0 || i > lenth(h)-1){std::cout << "i is error" << std::endl;return NULL;}SNode *p = h->next;for(int k=0; k<i, p!= NULL; k++){p = p->next;}if(p != NULL){return p;}
}
2.4 按值查找
int locate(SNode *h, int x)
{SNode *q = h->next;for(int i=0; i<lenth(h); i++){if(q->data == x){return i;}q = q->next;}// 未找到值域等于 x 的结点if(q == NULL){return -1;}
}
2.5 插入结点
// 插入结点,要在第 i 个位置插入 x
int insert(SNode *h, int x, int i)
{if(i < 0){std::cout << "i is error" << std::endl;return -1;}// 创建要插入的结点对象SNode *p = new SNode;p->data = x;SNode *q = h->next;// 先找到 i-1 个结点for(int k=0; k<i; k++){q = q->next;}p->next = q->next;q->next = p;return 0;
}
2.6 删除结点
// 删除结点,删除第 i 个位置的结点
int delnode(SNode *h, int i)
{if(i < 0 || i > lenth(h) - 1){std::cout << "i is error" << std::endl;return -1;}SNode *q = h->next;// 先找到 i-1 个结点for(int k=0; k<i; k++){q = q->next;}SNode *p = q->next;q->next = p->next;delete p;return 0;
}
2.7 显示链表
// 显示单链表
void display(SNode *h)
{SNode *p = h->next;while (p){std::cout << p->data << std::endl;p = p->next;}
}
数据结构(08)— 线性单链表基本操作相关推荐
- 【数据结构-C】单链表基本操作及图解分析
目录 单链表介绍 单链表基本操作及图解分析 1.创建一个新结点 2.头插法向单链表中插入结点 3. 尾插法向单链表中插入结点 4.头删法删除单链表结点 5.尾删法删除单链表结点 6.返回单链 ...
- 数据结构-单链表基本操作-C语言代码
单链表基本操作 1.头插法建立单链表 2.尾插法建立单链表 3.查找结点 3.修改结点 4.插入结点 5.删除结点 本篇只有c语言代码,具体思路讲解请看这篇博客:数据结构-线性结构-单链表 1.头插法 ...
- 【数据结构|链表】单链表基本操作
文章目录 一.链表 二.链表分类 三.单链表基本操作 3.1 单链表存储结构Init 3.2 遍历链表visitlist函数 3.3 求表长length 3.4 查找listfind ...
- python数据结构基础(单链表,多链表,二叉树)
python数据结构基础(单链表,多链表,二叉树) 数据结构指数据对象中数据元素之间的关系 Python 给我们提供了很多现成的数据结构类型,这些系统自己定义好的,不需要我们自己去定义的数据结构叫做 ...
- C语言单链表基本操作总结
C语言单链表基本操作 本文是参考他人实现的C语言单链表,对多篇博文整理的结果,仅作为学习笔记.文末有参考出处. 1.单链表定义 链表是通过一组任意的存储单元来存储线性表中的数据元素,这些存储单 ...
- 单链表基本操作的实现
单链表基本操作的实现 [PS]: 由于笔者的能力水平有限,如果遇到相关错误或者存在歧义的地方,欢迎在下方评论区留言联系笔者,如果你觉得这篇文章对你有帮助,那么不妨动动你的小手点赞收藏转发,让更多的人看 ...
- C 语言单链表基本操作
复习下数据结构,使用 C 语言实现了带头节点的单链表.单链表基本操作有:节点初始化.链表初始化.插入节点.查找节点.删除节点和删除链表等.下面的程序中,list.h 为头文件, 其中包含了上述基本操作 ...
- 线性链表java实现_java实现线性单链表
/** * * 线性单链表 */ public class LinkedLinearList { private Node head; private int length;// 实际长度 /** * ...
- 08、单链表编程考点
单链表编程考点 1.将单链表的第一个结点放在单链表的最后一个结点的后面 /* 设h是无头结点的单链表,如果线性表h的长度不小于2,则将首元结点删除并插入到表尾 将单链表的第一个结点放在单链表的最后一个 ...
最新文章
- JS脚本语言 JavaScript
- python编程lcd显示_Python api.lcd方法代码示例
- Oracle 分组统计,抽取每组前十
- python集合加个逗号_8.Python集合与字符串
- 在天气预报中应用机器学习
- linux耳机检测,Audio Jack 的耳机检测和按键检测
- 控制台下载vue_DubboAdmin管理控制台
- 解决我的windows不是正版的方法?
- 比特币官方客户端钱包是用什么语言开发的_5种主流比特币客户端的开发选型...
- 机器学习笔记——感知机理解(自行取用,并不一定适合每个人)
- 数字孪生 - 认知篇
- 一维的热传导方程向前差分法
- 关于Matlab中括号用法的总结
- 2009年10月 档案_39健康博客_benwen520dan
- 收藏|史上最全的30个生物实验技术及原理
- 前端播放二进制语音流
- Win11dns解析状态异常怎么处理?Win11dns解析失败解决方法
- EMOJI表情包源码
- matlab基础----复数表示
- EasyExcel之回填下拉框