文章
238
粉丝
0
获赞
3
访问
33.3k
评分及理由
(1)得分及理由(满分4分)
得0分。学生的基本设计思想是使用哈希表存储一个链表的指针,然后遍历另一个链表并查询哈希表,但这种方法存在严重逻辑错误:哈希表的大小仅为26(假设存储小写字母),但实际链表中结点数量可能远超过26,且哈希函数基于字符数据('data'字段)计算索引,这会导致不同结点可能映射到同一哈希槽(冲突),从而覆盖先前存储的指针。更重要的是,题目要求找共同后缀的起始位置(即第一个公共结点),而该方法依赖于结点数据(字符)而非指针地址的比较,但共同后缀的结点数据可能相同(如多个'i'结点),但只有指针相同才表示同一结点。因此,该方法不能正确找到共同后缀的起始位置,设计思想错误。
(2)得分及理由(满分8分)
得0分。代码实现基于错误的设计思想:哈希表大小固定为26,无法处理超过26个结点的情况;哈希索引使用`str1->data - 'a'`,但结点数据可能不是小写字母(题目未明确),且共同后缀的结点可能有相同数据但不同地址(如后缀中存在重复字符),但代码比较的是指针地址(`hash[...] == str2`),这要求哈希表恰好存储了相同地址的指针,但由于哈希冲突和覆盖,该条件很难满足。此外,代码遍历str1时存储的是每个结点的指针,但哈希索引由数据决定,因此相同数据的结点指针会被覆盖(只保留最后一个),导致信息丢失。整体逻辑错误,无法正确实现功能。
(3)得分及理由(满分1分)
得0分。学生给出的时间复杂度O(m+n)和空间复杂度O(1)是基于错误算法得出的,虽然时间复杂度分析正确(两次遍历),但空间复杂度错误:哈希表大小固定为26,但这是常数空间,但算法本身错误,因此不得分。
题目总分:0+0+0=0分
登录后发布评论
暂无评论,来抢沙发