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

时间:2017-03-11 03:31:45

标签: c++ linked-list

这是我的尝试

// 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变量正在正确更新。

1 个答案:

答案 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是什么。