如何返回指向链接列表中最大值的指针

How can return a pointer pointing to the largest value in a linked list?

本文关键字:列表 链接 最大值 指针 何返回 返回      更新时间:2023-10-16

这是我的尝试

// Return a pointer to node with the largest value.
// You may assume list has at least one element
Node * pointerToMax(LinkedList *list) {
  assert(list!=NULL);
  assert(list->head != NULL);
  Node *p, *q;
  p = list->head;
  q = list->head;
  int max = q->data;
  while(p != NULL){
    if(p->data > max){
      max = p->data;
    }
    return p;
    p = p->next;
  }
}

这是结构定义。

struct Node {
  int data;
  Node *next;
};
struct LinkedList {
  Node *head;
  Node *tail;
};

我试图弄清楚如何返回指向最大价值的指针,但我无法确切地弄清楚如何将指针返回变量max,我什至不确定max变量是否符合正在正确更新。

您想要这样的东西:

Node *maxNode = p;
int max = p->data;
while(p != NULL){
  if(p->data > max){
    max = p->data;
    maxNode = p;
  }
  p = p->next;
}
return maxNode;

没有理由在您的时循环中进行return。我们不知道最大 Node是什么,直到我们通过循环 the节点。