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

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

相关文章:

  • Unity基础——资源导入
  • Ubuntu 24.04 登录禁用用户列表
  • mapbox添加自定义图片绑定点击事件,弹窗为自定义组件
  • Mock测试:移动端分辨率适配
  • 【deepseek之我问】如何把AI技术与教育相结合,适龄教育,九年义务教育,以及大学教育,更着重英语学习。如何结合,给出观点。结合最新智能体Deepseek
  • MySQL企业开发中高频使用语句
  • nginx 正向代理与反向代理
  • 【Linux网络编程】高效I/O--select/poll服务器
  • 4.1 Go结构体的指针
  • 上海商米科技通信工程师后端开发岗内推
  • 基于SpringBoot的图书进销存管理系统开发与设计
  • 【AHK】资源管理器自动化办公实例/自动连点设置
  • go-zero中定时任务的用法
  • 如何搭建和管理 FTP 服务器
  • 取topN不同算法的实现的性能差别
  • Java线程池入门04
  • Neo4j 图数据库安装与操作指南(以mac为例)
  • SpringBatch简单处理多表批量动态更新
  • python的列表和元组别再傻傻分不清啦
  • Java 大视界 -- Java 大数据分布式文件系统的性能调优实战(101)
  • 自己做电商网站./国家职业技能培训学校
  • 哈尔滨市建设网/深圳优化公司哪家好
  • 哪些女性网站做女性慈善事业/网络推广的网站有哪些
  • 专门做电路图的网站/seo关键词优化外包公司
  • 没有做网站能备案吗/武汉seo网站排名优化
  • 数字展厅网站建设/沈阳seo排名优化推广