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)— 线性单链表基本操作相关推荐

  1. 【数据结构-C】单链表基本操作及图解分析

    目录 单链表介绍​ 单链表基本操作及图解分析 1.创建一个新结点 2.头插法向单链表中插入结点​ 3. 尾插法向单链表中插入结点​ 4.头删法删除单链表结点​ 5.尾删法删除单链表结点​ 6.返回单链 ...

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

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

  3. 【数据结构|链表】单链表基本操作

    文章目录 一.链表 二.链表分类 三.单链表基本操作   3.1 单链表存储结构Init   3.2 遍历链表visitlist函数   3.3 求表长length   3.4 查找listfind ...

  4. python数据结构基础(单链表,多链表,二叉树)

    python数据结构基础(单链表,多链表,二叉树) 数据结构指数据对象中数据元素之间的关系 Python 给我们提供了很多现成的数据结构类型,这些系统自己定义好的,不需要我们自己去定义的数据结构叫做 ...

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

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

  6. 单链表基本操作的实现

    单链表基本操作的实现 [PS]: 由于笔者的能力水平有限,如果遇到相关错误或者存在歧义的地方,欢迎在下方评论区留言联系笔者,如果你觉得这篇文章对你有帮助,那么不妨动动你的小手点赞收藏转发,让更多的人看 ...

  7. C 语言单链表基本操作

    复习下数据结构,使用 C 语言实现了带头节点的单链表.单链表基本操作有:节点初始化.链表初始化.插入节点.查找节点.删除节点和删除链表等.下面的程序中,list.h 为头文件, 其中包含了上述基本操作 ...

  8. 线性链表java实现_java实现线性单链表

    /** * * 线性单链表 */ public class LinkedLinearList { private Node head; private int length;// 实际长度 /** * ...

  9. 08、单链表编程考点

    单链表编程考点 1.将单链表的第一个结点放在单链表的最后一个结点的后面 /* 设h是无头结点的单链表,如果线性表h的长度不小于2,则将首元结点删除并插入到表尾 将单链表的第一个结点放在单链表的最后一个 ...

最新文章

  1. JS脚本语言 JavaScript
  2. python编程lcd显示_Python api.lcd方法代码示例
  3. Oracle 分组统计,抽取每组前十
  4. python集合加个逗号_8.Python集合与字符串
  5. 在天气预报中应用机器学习
  6. linux耳机检测,Audio Jack 的耳机检测和按键检测
  7. 控制台下载vue_DubboAdmin管理控制台
  8. 解决我的windows不是正版的方法?
  9. 比特币官方客户端钱包是用什么语言开发的_5种主流比特币客户端的开发选型...
  10. 机器学习笔记——感知机理解(自行取用,并不一定适合每个人)
  11. 数字孪生 - 认知篇
  12. 一维的热传导方程向前差分法
  13. 关于Matlab中括号用法的总结
  14. 2009年10月 档案_39健康博客_benwen520dan
  15. 收藏|史上最全的30个生物实验技术及原理
  16. 前端播放二进制语音流
  17. Win11dns解析状态异常怎么处理?Win11dns解析失败解决方法
  18. EMOJI表情包源码
  19. matlab基础----复数表示
  20. EasyExcel之回填下拉框

热门文章

  1. 前来推荐一本比较喜欢的读物——《浪潮之巅》
  2. Go 知识点(08) — 对未初始化的 channel 进行读写操作
  3. 德国最受欢迎的程序员技能排行
  4. java实现将汉语转换为拼音
  5. python读取word
  6. Pass算子python 函数
  7. 如何使用Intel vtune profilier?
  8. Nucleus 实时操作系统中断(上)
  9. 如何在小型pcb的移动设备上获得更好的无线性能
  10. 汽车车灯灯具系统(上)