当前位置: 首页 > article >正文

C语言实现单链表

        单链表是数据结构中最基础的链式结构,它不按照线性的顺序存储数据,而是由若干个同一结构类型的“节点”依次串联而成的,即每一个节点里保存着下一个节点的地址(指针)。

        上图中,一个表头变量head是用来存储链表首节点的地址,链表中每个节点有data(数据)部分和next(下一个节点的地址)部分组成。链表中的最后一个节点称为表尾,其下一个节点的地址部分的值为NULL。链表的各个节点在内存中可能是不连续存放的,具体存放位置由系统分配。

1、单链表结构定义

// 定义链表节点结构体
typedef struct ListNode {
	int data;				/* 数据域(存储节点数据) */
	struct ListNode* next;	/* 指针域(指向下一个节点的指针) */
} ListNode;

         定义链表节点结构体struct ListNode,并赋予别名ListNode,故后续代码出现的ListNode可代表struct ListNode。结构体中定义了data存储节点的数据,用struct ListNode*定义了next来存储指向下一节点的指针。

2、主要操作的代码实现

2.1、创建链表

         在应用链表时,往往需要先建立一个链表。建立链表的过程实际上就是不断在链表中插入节点的过程。

// 创建新节点
ListNode* createNode(int val)
{
	ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
	if (!newNode) {
		printf("内存分配失败!\n");
		exit(1);
	}
	newNode->data = val;
	newNode->next = NULL;
	return newNode;
}

         有两种常见的插入节点方式:

(1)在链表的头部不断地插入新节点。

(2)在链表的尾部不断地插入新节点。

 2.2、插入节点

2.2.1、头部插入

// 头部插入
void insertAtHead(ListNode** hea

http://www.kler.cn/a/563767.html

相关文章:

  • 线性回归(一)基于Scikit-Learn的简单线性回归
  • 记录Liunx安装Jenkins时的Package ‘jenkins‘ has no installation candidate
  • Jquery详解
  • FasterRCNN训练自己的数据集方法记录
  • 【SQL】客户报价/供应商料件价格分量计价函数
  • 关于网络端口探测:TCP端口和UDP端口探测区别
  • 【问题解决方案】随笔 - vscode里面出现双环境解决方案
  • 【REST2SQL】15银河麒麟系统下达梦数据库部署REST2SQL
  • Kubernetes与Docker:区别与优劣总结
  • 【构建工具】Gradle 8中Android BuildConfig的变化与开启方法
  • Nginx面试宝典【刷题系列】
  • Python----数据分析(Numpy一:numpy库简介,与list列表的区别,数组的创建,随机数组的创建)
  • 从零到一:如何用阿里云百炼和火山引擎搭建专属 AI 助手(DeepSeek)?
  • 支持selenium的chrome driver更新到133.0.6943.126
  • AIGC生图技术剖析:文本生成图像的核心算法与创新应用
  • 音频模拟信号转数字信号的原理
  • 基于Elasticsearch的日志管理:提升运维效率的新利器
  • 2025年2月科技趋势深度解析:大模型竞赛、硬件革命与可持续AI的未来
  • 【HTML】SVG标签的使用方式
  • Kotlin 2.1.0 入门教程(二十五)类型擦除