1
这是我尝试如何返回指向链表中最大值的指针?
// 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'的指针。就像这样,你立即返回,而不是让你的'while'循环有机会遍历LL。 – bejado
并没有使用指针'q',并且return语句应该在while循环后面,牢记@bejado的建议 –
您的当前代码只会在您第一次看到数据大于头节点。删除while循环中的'return p'语句并将其放在while循环之后。 –