文章

20

粉丝

0

获赞

0

访问

584

头像
2019年(408)计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年11月11日 11:40
阅读数 8

(1)
因为要时间上尽可能高效,所以用空间换时间。创建一个新的数组A,将L中的后半部分放进A中。再创建一个新的链表B,开始遍历链表L,插入链表B,再遍历数组A,插入链表B,然后循环,直到链表L和A的next指针指向NULL。

(2)

typedef struct node{

 int data;

struct node *next;

}NODE;

void AssignList(NODE,*next){

int i=0;

while(*next!=NULL)

{

if(i>=n/2)

{

A[i]=L->data;

i+=1;

}

else

{

i+=1;

}

for(j=0;j<=n/2;j++)

{}

}

(3)

本算法用了一个n/2大小的数组,空间复杂度是O(n/2)。遍历了一次线性表L,再遍历了数组A和L表的前半部分所以时间为n/2+n/2。所以时间复杂度是O(n).


评分及理由

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

得分:0分

理由:学生提出的算法思想使用了额外的数组来存储后半部分数据,空间复杂度为O(n),不符合题目要求的O(1)空间复杂度。虽然提到了时间高效,但基本设计思想不符合题目要求。

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

得分:0分

理由:代码实现不完整且存在多处错误:
1. 函数参数定义错误(NODE,*next应为NODE *L)
2. 未定义变量n、A等
3. 循环条件不完整
4. 缺少链表构建和合并的关键步骤
5. 代码逻辑无法实现题目要求的重排列功能

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

得分:0分

理由:虽然学生分析时间复杂度为O(n)是正确的,但这是基于错误的算法思想得出的结论。由于算法本身不符合题目要求,且代码实现存在严重问题,因此不能得分。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发