Linux之链表(一)——初始化、头插、尾插、头删、尾删

本文介绍了Linux环境下链表的基本操作,包括链表初始化、头插法、尾插法、头删法和尾删法的实现细节。通过创建节点结构体、初始化链表、动态内存分配以及节点的插入和删除,详细阐述了链表操作的关键步骤。文章还提供了测试代码及结果,便于读者理解和实践。
摘要由CSDN通过智能技术生成

在我们实现初始化、头插、尾插、头删、尾删要先做哪些工作呢?

首先我们要vim 两个文件Linklist.h Linklist.c。

在h文件中写入函数名、结构体等,真正实现的代码在c文件中实现。

1.创建节点的结构体

  typedef char LinkNodeType;
  5 typedef struct LinkNode                                                   
  6 {   
  7     LinkNodeType data;
  8     struct LinkNode* next;
  9 }LinkNode;

我们编写的是字符型链表,所以节点的结构体中有一个字符型数据,和指向下一个节点的结构体指针。

用一个宏来代替char, 将来方便我们修改与维护。

2.链表初始化

  5 void LinklistInit(LinkNode** head)                                        
  6 {
  7     *head = NULL;
  8 }

头指针置为空就行了,该链表为一个空链表。

3.创建节点

 17 LinkNode* CreatNode(LinkNodeType value) 
 18 {
 19     LinkNode*new_node = (LinkNode*)malloc(sizeof(LinkNode));
 20     new_node -> data = value;
 21     new_node -> next = NULL;                                              
 22     return  new_node;
 23 }

创建一个节点,首先要申请空间,申请的大小为整个节点结构体,再将其强转成结构体指针类型。

分别把结构体内的数据、下一个节点的结构体指针设置好,返回new_node这个节点的地址,我们的节点就创建好啦。

4.删除节点

 11 void DestroyNode(LinkNode* node)
 12 {   
 13     free(node); 
 14 }

我们申请节点的时候是用malloc申请的,所以当你删除时需要用free进行释放内存,否则会出现内存泄漏的情况。这里我们为什么要用一个函数来封装这一个语句呢?首先,代码逻辑结构紧密,整体具有建筑美。其次,将来我们修改或维护时,只需要对其函数进行修改就可以了,比较方便。

5.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值