C语言链表基本操作

本文介绍了链表作为数据结构的基础概念,包括链表的两种形式和如何通过头指针进行操作。详细讲解了如何在C语言中创建、遍历、添加、查找、删除链表节点,并提供了相应的函数实现,包括头尾添加、遍历输出、查找指定节点、链表清空、在指定位置插入和删除节点等操作。
摘要由CSDN通过智能技术生成

1.链表概述
  链表是一种常见的数据结构。它与常见的数组是不同的,使用数组时先要指定数组包含元素的个数,即为数组的长度,但是如果向这个数组中加入的元素超过了数组的大小时,便不能将内容全部保存。
  链表这种存储方式,其元素个数是不受限定的,当进行添加元素的时候存储的个数就会随之改变。

链表一般有两种形式,有空头链表和无空头链表。

在链表中有一个头指针变量,这个指针变量保存一个地址,通过这个地址来找到这个链表,头指针节点指向第一个节点,在链表中每个节点包含两个部分:数据部分和指针部分。虽然结构体不能含有与本身类型相同的结构,但是可以含有之相同类型结构的指针,这种定义是链表的基础,链表中每一项都包含在何处能找到下一项的信息。而最后一个节点的指针指向必须为空NULL,从链表的原理来看不用担心链表的长度会超出范围这种问题。

2.链表的基本使用
2.0 准备工作
  使用链表时,首先应包含一些基本的头文件,因为涉及到内存的操作和字符串的操作。

#include “stdio.h”
#include “stdlib.h” //提供malloc()和free()
#include “string.h” //提供strcpy()等
1
2
3
malloc函数
其函数原型如下:

void *malloc(unsigned int size);
这个函数返回的是个void类型指针,所以在使用时应注意强制类型转换成需要的指针类型。
free函数
其函数原型如下:

void free(void *p);
这个函数是用来释放指针p作指向的内存区。

2.1 创建节点(结构体)
struct Node
{
int a; //数据域
struct Node* next; //指针域(指向节点的指针)
};
1
2
3
4
5
2.2 全局定义链表头尾指针 方便调用
struct Node* head= NULL;
struct Node* end = NULL;
1
2
2.3 创建链表,实现在链表中增加一个数据(尾添加)————增
void AddListTill(int a )
{
//创建一个节点
struct Node* temp=(struct Node*)malloc(sizeof(struct Node)); //此处注意强制类型转换

	//节点数据进行赋值
	temp->a=a;
	temp->next=NULL;		
	
	//连接分两种情况1.一个节点都没有2.已经有节点了,添加到尾巴上
	if(NULL==head)
	{	

		head=temp;
	//	end=temp;
	}
	else
	{
	end->next=temp;
//	end=temp;			//尾结点应该始终指向最后一个
	}
	end=temp;			//尾结点应该始终指向最后一个

}
1
2
3
4
5
6
7
8
9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值