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循環之後。 –