C语言实现无头单链表详解

本文详细介绍了如何使用C语言实现无头单链表,包括链表结构体定义、创建链表、节点操作(头插法、尾插法、插入、删除等)、打印链表和判断空链表的处理。文章强调了防御性编程,特别是在内存申请失败时的处理策略,以确保程序的安全性。
摘要由CSDN通过智能技术生成

再封装的方式,用 c++ 的思想做无头链表

链表的结构体描述(节点)

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>       
typedef int DataType;
//节点
typedef struct Node        
{
	DataType data;
	struct Node* next;
}NODE,*LPNODE;

再定义一个结构体(链表) 

通过记录头节点和尾节点的方式去描述链表

typedef struct list 
{
	LPNODE frontNode;        //头节点
	LPNODE backNode;         //尾节点
	int curSize;	         //当前节点个数
}LIST,*LPLIST;

断言处理 & 判空处理

如果 list 为空,会引发中断(申请内存可能失败)

防御性编程,如果申请内存失败,操作无效,NULL 里面没有 frontNode,backNode,curSize,存在安全隐患C6011:取消对 NULL 指针"list"的引用

如果申请内存失败,assert()直接让程序直接中断,并且告诉你程序断在哪一行

#include<assert>    //断言处理宏
   #de
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荣华富贵8

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值