文章

173

粉丝

0

获赞

0

访问

29.7k

头像
2015年计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年10月5日 15:02
阅读数 83

(1)定义两个指针,pre=head,cur=head→link.如果 abs(pre→link→data)==abs(cur→link-data)就让cur一直移动直到不等于abs(pre->link→data),然后让pre→link =cur,cur=pre-link,如果不等于,就pre=pre→link,cur=cur→link,直到cul->link=NULL.

(2)typedef struct linkNode{

int data;

linkNode *link;

}linkNode,*linkList;

(4)时间复杂度:O(n) 空间复杂度:O(1)


评分及理由

(1)得分及理由(满分3分)

得分:0分

理由:学生的基本设计思想存在逻辑错误。该思路试图通过比较相邻结点的绝对值来删除重复结点,但这种方法只能检测相邻重复,无法处理非相邻的绝对值重复结点(如链表:1→-1→2,该方法会漏删-1)。题目要求删除所有绝对值相等的重复结点(无论是否相邻),因此该思路不符合题目要求。

(2)得分及理由(满分2分)

得分:2分

理由:单链表结点的数据类型定义完全正确,使用了typedef定义结构体和指针类型,语法规范。

(3)得分及理由(满分8分)

得分:0分

理由:算法实现存在多处逻辑错误:
1. 代码中比较的是pre->link->data和cur->link->data的绝对值,但pre和cur初始指向head和head->link,这种比较逻辑混乱
2. 内层循环条件"while(cur->data == pre_data)"错误,应该比较绝对值而非直接比较data
3. 删除逻辑错误,没有正确释放被删除的结点
4. 循环条件"while(cur->link!=NULL)"可能导致最后一个结点无法被处理
5. 整体算法无法正确实现题目要求的去重功能

(4)得分及理由(满分2分)

得分:0分

理由:时间复杂度分析错误,实际算法的时间复杂度不是O(n);空间复杂度分析虽然正确为O(1),但由于算法本身错误,不能给分。

题目总分:0+2+0+0=2分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发