Node *selectSort(Node *head){ Node *p = head, *q = NULL, *min = NULL, *tmp = NULL; while (p != NULL) { min = p; q = p->next; while (q != NULL) { if (q->data < min->data) { min = q; } q = q->next; } if (min != p) { tmp = min->data; min->data = p->data; p->data = tmp; } p = p->next; } return head; }为以上代码添加注释
时间: 2024-02-29 15:53:33 浏览: 64
/* 选择排序函数,参数为链表头指针,返回排序后的链表头指针 */
Node *selectSort(Node *head){
Node *p = head, *q = NULL, *min = NULL, *tmp = NULL; // 定义指针p, q, min, tmp,初始化为NULL
while (p != NULL) { // 当p不为NULL时,继续执行循环
min = p; // 将min指针指向p节点
q = p->next; // 将q指针指向p节点的下一个节点
while (q != NULL) { // 当q不为NULL时,继续执行循环
if (q->data < min->data) { // 如果q节点的data成员比min节点的data成员小
min = q; // 将min指针指向q节点
}
q = q->next; // 将q指针指向下一个节点
}
if (min != p) { // 如果min节点不等于p节点
tmp = min->data; // 将tmp指针指向min节点的data成员
min->data = p->data; // 将min节点的data成员赋值为p节点的data成员
p->data = tmp; // 将p节点的data成员赋值为tmp指针指向的值
}
p = p->next; // 将p指针指向下一个节点
}
return head; // 返回排序后的链表头指针
}
阅读全文