C语言链表的创建,遍历,加入,删除,完整代码

本文详细介绍了C语言中链表数据结构的创建、遍历、加入新节点(头节点后、链表末尾、指定位置)以及删除节点的实现方法,并提供了完整代码示例。对于链表的操作,理解节点之间的连接关系是关键,通过指针的指向变化实现链表的动态管理。

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

创建

首先链表这个数据结构的结构体由两个部分组成,分别是数据域和指针域,也就是存放数据的变量和指针

struct student{
   
   
	char name[30];   //数据域
	float number;    //数据域
	struct student *pNext;   //指针域
};

链表的创建,就是在创建节点(malloc)和输入数据的同时让每个节点(结构体)都连接起来,连接的方式就是靠指针域中的指针,让每个结点的pNext都指向下一个节点,最后一个节点没节点可指的呀,那就让最后一个节点的指针(pNext)指向空(NULL)
这样,每个节点都连在了一起,就形成了一个长链,链表就创建好啦

struct student *create(){
   
   
	struct student *pHead=NULL;   //头节点,指向第一个结构体
	struct student *pNew,*pEnd;   //新节点和最后一个节点
	pNew=pEnd=(struct student*)malloc(sizeof(struct student));  //给新节点和最后一个节点分配内存
	printf("名字 学号:");
	scanf("%s %f",&pNew->name,&pNew->number);  //输入数据
	/*判断当数据中的number等于0时停止分配新节点*/
	while(pNew->number!=0){
   
   
		len++;  //长度(将会在后面完整代码中出现,这是个全局变量)
		if(len==1){
   
   
			pNew->pNext=NULL;  //当长度等于1时让新节点的指针指向空(NULL)
			pEnd=pNew;
			pHead=pNew;
		}
		else{
   
   
			pNew->pNext=NULL;  //当长度大于1时新节点指针指向空
			pEnd->pNext=pNew;  //最后一个节点指向新节点
			pEnd=pNew;  
		}
		pNew=(struct student*)malloc(sizeof(struct student));  //分配新节点
		scanf("%s %f",&pNew->name,&pNew->number);
	}
	free(pNew);  //将多分配出的节点释放掉
	return pHead;  //返回链表的的头节点
}

或者还可以这样创建

struct student *create(){
   
   
	struct student *pHead,*pNew,*p;  
	pNew=(struct student*)malloc(sizeof(struct student));
	printf("输入名字 学号:\n");
	scanf("%s %f",&pNew->name,&pNew->number);
	pNew->pNext=NULL;
	pHead=pNew;
	p=pNew;
	pNew=(struct student*)malloc(sizeof(struct student));
	scanf("%s %f",&pNew->name,&pNew->number);
	while(pNew->number!=0){
   
   
		p->pNext=pNew;
		p=p->pNext;
		pNew=(struct student*)malloc(sizeof(struct student));
		scanf("%s %f",&pNew->name,&pNew->number);
	}
	p->pNext=NULL;
	free(pNew);
	return pHead;
}

遍历

知道如何创建了,下一步就是遍历
遍历的话就

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值