每日一题———11.删除单链表中的最小值的结点

前言

数据结构每日一题

声明:因个人能力有限,本文仅是个人的学习记录笔记,有错误之处还望指出

题目

编写一个算法实现在带头结点单链表L中删除最小值结点的算法

要点

  • 链表的遍历
  • 链表结点的删除

思想

  1. 先是链表的遍历,这里需要用到两个指针,一个用作遍历链表,一个记录遍历指针的前驱结点信息
  2. 在找到最小值的时候对数据进行删除,需要一个指针记录当前最小值的结点,因为要删除该节点,所以还需要一个前驱节点来方便删除的实现
  3. 在扫描过程中,如果遍历指针中的值 < 最小节点的值,则将该值赋给最小结点,记录遍历指针的前驱
Linklist  DeletMin(LinkList &L){
	LNode *pre=L,*p=pre->next;
	LNode *minpre=pre,*minp=p;
	//遍历链表
	while(p != NULL){
		//遍历到比当前值还小的值
		if(p->data  < minp->data){
			minp=p;
			minpre=pre;
		}
			pre=p;
			p=p->next;
	}
	//遍历完全后,minp中保存的就是 最小值的节点了
	//删除节点
	minpre->next=minp->next;
	free(minp);
	return L;
}

今日易错题

  1. 在长度为n的有序单链表中插入一个新节点,并且依然保持有序的时间复杂度是 O(nlog2n)
  2. 需要分配较大的空间,在进行插入和删除操作不需要移动线性表的存储结构为 静态链表(结合了顺序表和链表的优点)
  3. 静态链表中指针表示的是 下一元素在数组中的位置
而塞过 2021-5-29
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值