数据结构—链表(c语言)

本文介绍了链表的基本概念,强调了链表作为一种非连续、非顺序的存储结构,由动态生成的结点组成。链表与数组在逻辑结构上的相似性和物理存储上的区别进行了对比。此外,还探讨了链表在动态存储分配中的重要作用,提到了malloc和free两个关键函数,并概述了链表的增删改查基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.链表的基本概念

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。

2.链表的逻辑结构

我们可以将链表与数组进行类比来学习,链表与数组具有相同的逻辑结构。
它们之间也有区别,我们学过数组都知道,数组各元素的存储空间是连续的、固定的,数组元素个数在我们定义完成后是不可改变的。而链表中的元素个数是可变化的,元素的存储空间是动态分配的,逻辑上相邻的节点物理存储空间上不一定相邻,而数组则是逻辑上相邻则物理存储空间上也相邻。

3.链表的基本应用

链表是采用动态存储分配的一种重要的数据结构。链表的基本操作有增删改查等。在进行链表的基本操作之前我们要学习两个处理动态链表所需要的函数。
(1)分配内存空间函数 malloc
函数调用的一般形式为:(类型说明符 * )malloc (size)

malloc函数要求系统在内存中分配一块存储空间,这个存储空间是长度为size字节的连续区域,函数的返回值为该区域的首地址。“类型说明符”,表示将该区域用于何种数据类型。
(2)释放内存空间函数 free
函数调用的一般形式为:free(p)
释放p所指向的一块内存空间,p是一个任意类型的指针变量,它指向被释放区域的首地址,被释放的区域应该是由malloc所分配的区域。
一个好的存储空间动态分配程序应该包括申请内存空间、使用内存空间、释放内存空间三个步骤。
下面就是链表的增删查找基本操作。

#include<stdio.h>
#include<stdlib.h>
struct node
{
   
   
	int num,score;
	struct node * next;
};
void find(struct node * head)/*查找节点*/
	struct node *p;
	int x;
	printf("输入要查找的学号:\n");
	scanf("%d",&x);
	p=head;
	while(p!=NULL && p->num!=x)
		p=p->next;
	if(p)
		printf("num=%d\tscore=%d",p->num,p->score);
	else
		printf("%d没有找到!\n")<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值