单向链表的基本功能

本文介绍了单向链表的概念,包括数据域和指针域的作用,以及链表与数组的区别。重点讲解了如何使用C语言实现链表的基本操作,如创建链表、删除节点、增加元素和查找操作,强调链表在插入和删除操作上的优势。
摘要由CSDN通过智能技术生成

大一的时候用c语言学的链表,学的懵懵懂懂,模模糊糊;大二的时候重新回顾链表的相关知识,有了一个更为宏观的概念。(这里只讲单向链表)

  • 链表是一系列存储数据元素的单元通过指针联系起来的,因此每个单元都至少包含了两个区域,一个是存储数据元素的区域,一个是存储指针的区域。这些存储数据元素的单元我们统称为节点(node)。
    在这里插入图片描述
    单向链表中数据域是存储数据用的,指针域是用来指向下一个有同样结构的单元。
    在这里插入图片描述
    和数组类似,单向链表的节点也是一个线性次序,比如 a0的next只想a1,则a0是a1的前驱,可以用一个指针找到某个单元的后驱,同时,也可以用两个指针来找出某个单元的前驱。
  • 链表是逻辑意义上的相连,但实际意义上并非如此,是由指针来替代数组的数据结构的。
  • 相对于数组来说,数组查找更为方便,因为链表的查找需要从头到尾依次进行,但链表的插入和删除操作更为简单,因为正如上面所说,链表并不是实际上的链式结构,其链式结构是由指针体现的,故插入和删除只考虑指针就可以了,而不用考虑把数据元素给移位。

下面我们用c语言实现以下基本的创建链表和删除,增加,查找功能
创建链表

  • 创建一个结构体
typedef struct link
{
   
	int x;
	struct link *next;
}student;
  • 创建一个链表
student *head,*h,*node;
	int n,i;
	head=(student*)malloc(sizeof(student));
	h=head;
	printf("how many number do you want to creat\n");
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
   
		h->next=(student*)malloc(sizeof(student));
		h=h->next;
		printf("put in your number ");
		scanf("%d",&h->x);
		
	}
	h->next=NULL; 
	h=head->next;
	while(h!=NULL){
   
		printf("%d\n",h->x);
		h=h->next;
	}
  • 修改链表中的某个值(查找)
void change(student *list,int n)
{
   
	student *t=list,*h;
	int i=0,m;
	while(i<n && t!=NULL)
	{
   
		t=t->next;
		i++;
	}
	if(t!=NULL)
	{
   
		printf("put into the changable number\n");
		scanf("%d",&t-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值