我得做我的实验))一般来说,我应该找出评分最小的三个学生的指数,没有三个循环我怎么能做到呢?只需要一个就行了。在这个函数中,我使用了结构和输出参数。
int addDelateThree(stud** pListHead, int* Imin, int* Jmin, int* Cmin) {
stud* pTemp = pListHead;
stud* SpTemp = pListHead;
stud* TpTemp = pListHead;
int check = 0;
double min1 = pTemp->madian;
double min2 = SpTemp->madian;
double min3 = pTemp->median;
int i = 0;
while (pTemp != NULL) {
if (min1 > pTemp->madian) {
min1 = pTemp->madian;
*Imin = i;
}
i++;
pTemp = pTemp->next;
}
i = 0;
while (SpTemp != NULL) {
if (min2 > SpTemp->madian && i != *Imin) {
min2 = SpTemp->madian;
*Jmin = i;
}
i++;
SpTemp = SpTemp->next;
}
i = 0;
while (TpTemp != NULL) {
if (min3 > TpTemp->madian && i != *Imin && i != *Jmin) {
min3 = TpTemp->madian;
*Cmin = i;
}
i++;
TpTemp = TpTemp->next;
}
}
1条答案
按热度按时间am46iovg1#
1.创建一个包含3个
stud *
的列表。初始化all以指向一个虚拟记录,该记录的.madian = INFINTY;
1.遍历链接列表一次。
比较节点的
.madian
与list[2]->madian
。如果<=
,则使用新的最小值.madian
调整3的列表。这可能涉及多次比较,因为代码首先比较最大的最小值,然后比较下一个最大的最小值,最后比较最小值。1.报告结果。
O(n)解。