单链表的增删改查操作详解之C语言版

单链表在应用中经常用到增加新结点、删除结点、修改结点、查找结点等操作,本文针对上述基本操作做了简单汇总,并给出了详细的算法。

一、在单链表中增加结点

在链表中增加新结点是经常要用到的操作,增加新结点大致可以分为在链表末尾增加、在链表头增加、在中间某个位置增加等三种情形。增加新结点也称为插入新结点。链表结点的接头体如下:

typedef  struct  Lnode
{
      
	int           data;     //数据域
	struct Lnode  *next;    //指针域
}LNode;

1.在链表尾插入新结点
假设有单链表如下:
在这里插入图片描述
增加元素为3的新结点,得到如下新链表:
在这里插入图片描述
算法流程:
1)生成新结点s存储元素3
2)让p指向表头h
3)让p依次后移到链表尾
4)将s链接到p之后
算法:

s = ( LNode* )malloc( sizeof( LNode ) ); 
s->data = 3;	 
s->next = NULL; 
p = h;
while( p->next != NULL )
{
   
	p = p->next;
	p->next = s;
}

2.在链表头插入新结点
在表头插入新结点比较简单,生成新结点之后挂在表头之后即可。
在这里插入图片描述
算法为:

s = ( LNode* )malloc( sizeof( LNode ) ); 
s->data = 3;	 
s->next = h->next; //此部关键,先把s和结点1链接上。
h->next = s;

3.在链表中间某个位置插入新结点
已有链表如下:
在这里插入图片描述
想在元素为4的结点之前插入新结点s,插入过程为:
1)生成新结点s;
2)引入两个临时指针p和q,p通过遍历指向4的结点,q作为p的直接前驱
3)把新结点s插入到q和p之间
在这里插入图片描述
算法实现(只考虑了插值成功未考虑失败):

key = 4;
s = ( LNode* )malloc( sizeof( LNode ) ); 
s->data = 3;
q = h;
p = q->next;
while( p->data != key )
{
   
	q = p;
	p = p->next;
}
q->next = s;
s->next = p;

二、在单链表中删除结点

1.删除一个结点
在这里插入图片描述
删除元素为3的结点,其算法如下:

key = 3;
q = h;
p = q->next;
while( p != NULL && p->data != key )//当p结点的值不是key,则q和p平行后移,
{
   
	q = p;           //q先指向p,之后p再后移
	p = p->next;
}
if( p == NULL )
	输出链表中无目标结点
else
	q->next = p->next;
free( p );

2.删除与某个元素相同的全部结点
在这里插入图片描述
删除链表中元素为3的全部结点,则算法为:

	key = 3;
	q = head;
	p = head->next;
	//定位
	while( p != NULL)
	{
   
		if( p->data == key )
		{
   
			q->next = p->next;
			free(p);
			p = q->next;
		}
		else
		{
   
			q 
### 如何下载 Fusion 360 免费版 #### 访问官方网站 为了获取Fusion 360的免费版本,访问Autodesk官方网址是必要的。进入网站后,在页面顶部导航栏找到并点击“产品”选项,随后在下拉菜单中选择“Fusion 360”,这将引导至专门的产品介绍页[^1]。 #### 注册账号或登录现有账户 如果尚未拥有Autodesk账户,则需创建一个新的;已有账户则直接输入用户名和密码进行登录操作。注册过程中可能需要验证邮箱地址以完成身份确认过程[^2]。 #### 选择合适的许可类型 对于希望获得免费使用权的人群来说,有两种主要途径可以选择——个人创作者计划或是学生/教师教育套餐。前者适用于独立设计师、艺术家以及其他符合条件的小型企业主;后者则是专门为在校学习者及其指导老师设计的特别优惠方案[^3]。 #### 安装程序下载 一旦选择了适合自己的授权方式之后,按照屏幕提示继续前进直到看到“立即试用”的按钮为止。单击该按钮即会启动文件传输流程,并自动检测操作系统环境从而推送相匹配的操作指南给用户参照执行安装步骤[^4]。 需要注意的是,如果是使用Mac设备的话,由于Apple App Store内并未提供针对此平台优化过的非付费版本链接,所以建议先彻底移除任何先前通过其他渠道(比如应用商店)安裝下来的旧版本实例后再依照上述方法重新部署最新发行镜像包。 ```bash # 卸载旧版本命令 (仅限 macOS 用户) sudo rm -rf /Applications/Autodesk/Fusion\ 360/ ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值