链表的创建及基本操作(增、删、改、查)

本文详细介绍了链表的概念、结点构成,以及如何使用malloc和free函数进行内存管理。通过尾插法和头插法创建链表,并展示了链表的基本操作,包括增加、删除、修改和查找节点的实现代码。
摘要由CSDN通过智能技术生成

一、链表概述

  • 链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
  • 与数组区别:
    链表是链式的存储结构,数组是顺序的存储结构。
    链表通过指针来连接元素与元素,数组则是把所有元素按次序依次存储。
    优缺点如图:
    数组与链表的优缺点

二、创建链表前的准备工作

1.结点构成

  • 数据域:存放用户需要的实际数据
  • 指针域:存放下一个结点的地址

2.malloc函数

  • 函数原型:void *malloc(unsigned int size);
  • 功能:在内存的动态存储区申请一个长度为size字节的连续存储空间,并返回该存储空间的起始地址。如果没有足够的内存空间可分配,则函数的返回值为空指针NULL。
  • 说明:这个函数返回的是个void类型指针,所以在使用时应注意强制类型转换成需要的指针类型。

3.free函数

  • 函数原型:void free(void *p);
  • 功能:将指针变量p指向的存储空间释放,交换给系统。

三、创建链表

1.尾插法

  • 特点:输入顺序(存储顺序)与输出顺序相同
  • 图解:尾插法
  • 核心代码
end->next = p;     //尾节点连接新节点
end = p;           //尾节点向后移动成为新的尾节点

2.头插法

  • 特点:输入顺序(存储顺序)与输出顺序相反
  • 图解:
    头插法
  • 核心代码:
p->next = head->next;    //新节点指向头节点的下一位
head->next = p;         //头节点连接新节点

3.完整代码

struct node *creat() {
   
	//定义头指针head,尾指针end,和指向新节点的指针p
	struct node *head= NULL, *end = NULL, *p = NULL;    //初始化
	head = (struct node *)malloc(sizeof(strcut node));  //动态申请内存
	end = head;
	head->next = 
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值