gpt4 book ai didi

c - 在c中按电影标题的字母顺序对链接列表内容进行排序

转载 作者:行者123 更新时间:2023-11-30 18:45:23 25 4
gpt4 key购买 nike

我试图在 c 中按字母顺序对电影标题的链接列表进行排序,但我无法弄清楚。这是我到目前为止所拥有的:

ReviewNode *sortReviewsByTitle(ReviewNode *head)
{
char tempTitle[MAX_STR_LEN];
ReviewNode *p = NULL;
ReviewNode *temp = NULL;
p = head;
while (p!= NULL){
temp = p;
while(temp->next != NULL){
if(strcmp(temp->review.movie_title, temp->next->review.movie_title) > 0){
strcpy(tempTitle, temp->review.movie_title);
strcpy(temp->review.movie_title, temp->next->review.movie_title);
strcpy(temp->next->review.movie_title, tempTitle);
}
temp = temp->next;
}
p = p ->next;
}
return head;

我的一个测试用例:排序:c、b、a 并返回 b、a、c

最佳答案

为什么不直接移动节点的指针而不是使用strcpy呢?如果它是一个单链表,您将需要一个 before 节点,该节点是 temp 节点的前一个节点,因此当您执行 temp = temp->下一步,您首先执行before = temp。这是使用双向链接节点的方式:

if (strcmp(/*...*/) > 0) {
ReviewNode *swap = temp->next;
temp->next = swap->next;
swap->prev = temp->prev;
swap->next = temp;
temp->prev = swap;
}

这样您就不必复制字符串,这可能比简单地移动节点花费更长的时间。了解如何移动这些链接的一个好方法是拿起一支铅笔和一张纸并模拟正在排序的列表。这需要时间,但你最终会从中学到很多东西!

如果没有更多信息,很难知道您面临什么问题。祝你好运!

关于c - 在c中按电影标题的字母顺序对链接列表内容进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54910959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com