链表-有头链表

链表-有头链表

一、 什么是链表

链表是一种数据结构,数据结构也就是存取数据的一种方式。它是指相互之间存在一种或多种特定关系的数据元素的集合。而链表是由多个一样特点基本单位组成(我们用结构体来表示这个基本单位)的,而每一个单位只负责下一个数据的位置,要知道它是怎么连接的那就要知道,在基本单位结构体中的分为两种数据分别是:数据域指针域,它是由每个基本单位结构体的指针域指向下一个位置的地址,从而将它们连接起来。链表在内存空间中数据存储的位置的特点是分布离散的、随机的。它们像串珠子一样一个接一个的线性结构。
在这里插入图片描述头指针与头结点
头指针:头指针是指向链表第一个结点的的指针,如果有头结点那么头指针就是头结点的指针。

头结点:头结点是为了操作统一和方便而设立的,即放在第一个元素的结点之前,数据域一般没有意义(也可以放链表长度)

链表的分成
有头链表、无头链表、双向链表、双向循环链表。

二、有头链表

我们今天来说说有头链表,顾名思义有头链表一定有一个领头羊(头结点)去引导下面的数据。但是要注意的是有头链表它的头节点是不放数据的。

有头链表的思路

1.每个链表都是由多个一样的单元构成所以要先用结构体创建一个最小的特征单位。

#include <stdio.h>
#include <stdlib.h>
//最小的单位
struct Node
{
   
	int data;//数据域
	struct Node* next;//指针域
};

2.有头链表要有一个头部去引导下一个数据所以第二步要创建一个头出来

//创建表头(链表)
struct Node* createHead()
{
   
	struct Node* Nodehead = (struct Node*)malloc(sizeof(struct Node));//用malloc在堆区开辟一个空间
	Nodehead->next = NULL;//创建的表头没有数据跟着所以要NULL
	return Nodehead;
}

3.有了头之后,我们要创建结点,因为每个链表都是由许多的节点构成的,所以要创建节点

//创建结点
struct Node* createNode(int data)
{
   
	struct Node* Noded = (struct Node*)malloc(sizeof(struct Node));
	Noded->data = data;
	Noded->next = NULL;
	return Noded;
}

5.创建好链表之后,我们必然要对其进行数据的扩增和无用数据的删除(在数据的添加和删除时都要记得保存下一个结点防止数据丢失)。数据的添加有以下三种方式:

  1. 表头插入
    在这里插入图片描述
//头结点插入
void 
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值