传热学c语言节点编程题_【每日编程214期】2015年408应用题41题

每日编程中遇到任何疑问、意见、建议请公众号留言或直接撩Q474356284(备注每日编程)

今日问题:

2015年408统考41题

用单链表保存m个整数,结点的结构为:  ,且|data|<n(n为正整数)。现要求设计一个时间复杂度尽可能高效的算法,对于链表中data的绝对值相等的结点,仅保留第一次出现的结点而删除其余绝对值相等的结点。例如,若给定的单链表head如下:

93ee8bb7a1146406533e7ca6464e7d40.png

则删除节点后的head为:

ffb7995b2feb5a57c3ef43401f67ff31.png

要点:

(1)给出算法的基本设计思想。

(2)使用C或C++语言,给出单链表结点的数据类型定义。

(3)根据设计思想,采用C或C++语言描述算法,关键之处给出注释。

(4)说明你所设计算法的时间复杂度和空间复杂度。


解决方法:

(1)算法的基本思想:

算法的核心思想是用空间换时间。使用辅助数组记录链表中已出现的数值,从而只需对链表进行一趟扫描。

因为|data|≤n,故辅助数组temp的大小至少为n+1,各元素的初值均0。依次扫描链表中的各结点,同时检查temp[|data|]的值,如果为0,则保留该结点,并令++temp[|data|];否则,将该结点从链表中删除。

(2)使用C语言描述的单链表结点的数据类型定义

4fb34f625993f92a203e01106deaae49.png

(3)C语言算法描述

8c30f1bbaa661b7e9822ff33dd3cf537.png

b20bf048468cba54b0de39ef67301abb.png

(4)本算法的时间空间复杂度都为O(n)


明日题目预告:

2014年408应用题41题

二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和。给定一棵二叉树T,采用二叉链表存储,结点结构为:

72561530c5655b3403281225bfee9cb5.png

其中叶结点的weight域保存该结点的非负权值。设root为指向T的根结点的指针,请设计求T的WPL的算法,要求:

(1)给出算法的基本设计思想;

(2)使用C或C++语言,给出二叉树结点的数据类型定义;

(3)根据设计思想,采用C或C++语言描述算法,关键之处给出注释。

a5fd62d382588ec272c52c384c764a11.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值