可以在打印函数之前添加一个排序函数来对多项式链表进行按指数从高到低的排序。以下是修改后的代码:
// 辅助函数,交换两个节点的数据
void Swap(HLinkNode* a, HLinkNode* b) {
float tempCoefficient = a->coefficient;
int tempExponent = a->exponent;
a->coefficient = b->coefficient;
a->exponent = b->exponent;
b->coefficient = tempCoefficient;
b->exponent = tempExponent;
}
// 排序多项式链表
void Sort(HLink H) {
if (H == NULL || H -> next == NULL) {
return; // 链表为空或只有一个节点,无需排序
}
HLinkNode *current, *index;
int swapped;
do {
swapped = 0;
current = H;
while (current -> next != NULL) {
index = current -> next;
if (current -> exponent < index -> exponent) { // 按指数从高到低排序
Swap(current, index);
swapped = 1;
}
current = current -> next;
}
} while(swapped);
}
// 输出多项式链表
void Print(HLink H) {
if (H == NULL) {
printf("多项式为空。\n");
return;
}
Sort(H); // 对链表按指数从高到低进行排序
HLinkNode* current = H;
// ...
}
这样,在打印多项式链表之前会先按照指数从高到低进行排序,然后再输出。
内容由零声教学AI助手提供,问题来源于学员提问




