这是我的尝试
// 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
变量正在正确更新。
答案 0 :(得分:5)
你想要这样的东西:
public class AsynchronousWrapper
{
private static SemaphoreSlim _mutex = new SemaphoreSlim(1);
public async Task<T> ProcessAsync<T>(Task<T> arg)
{
await _mutex.WaitAsync().ConfigureAwait(false);
try
{
return await arg;
}
finally
{
_mutex.Release();
}
}
}
你的while循环中没有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
是什么。