面试题答案
一键面试#include <stdio.h>
#include <stdlib.h>
struct Task {
int taskID;
int priority;
void (*execute)(void);
struct Task* next;
};
// 示例任务执行函数
void sampleExecute(void) {
printf("执行任务\n");
}
void adjustTaskQueue(struct Task** head, int newTaskID, int newPriority, void (*newExecute)(void)) {
struct Task* newTask = (struct Task*)malloc(sizeof(struct Task));
newTask->taskID = newTaskID;
newTask->priority = newPriority;
newTask->execute = newExecute;
newTask->next = NULL;
if (*head == NULL) {
*head = newTask;
return;
}
struct Task* current = *head;
struct Task* prev = NULL;
while (current != NULL && current->priority >= newPriority) {
prev = current;
current = current->next;
}
if (prev == NULL) {
newTask->next = *head;
*head = newTask;
} else {
newTask->next = current;
prev->next = newTask;
}
}
可以通过以下方式调用:
int main() {
struct Task* head = NULL;
adjustTaskQueue(&head, 1, 3, sampleExecute);
adjustTaskQueue(&head, 2, 2, sampleExecute);
adjustTaskQueue(&head, 3, 3, sampleExecute);
struct Task* current = head;
while (current != NULL) {
printf("任务ID: %d, 优先级: %d\n", current->taskID, current->priority);
current = current->next;
}
// 释放链表内存
current = head;
while (current != NULL) {
struct Task* temp = current;
current = current->next;
free(temp);
}
return 0;
}