Вывести в стеке название диска с максимальним размером

Не могу вывести название диска с максимальным объемом, выводится только его размер (сам размер наибольшева диска так же нужно выводить)

class Stack
{
    public string Disk;
    public int Memori_Size;
    public Stack next;
}
class Program
{
    static void Main()
    {
        Stack head = null;
        Stack current = null;
        Console.WriteLine("Ви бажаєте створити стек (y-так)");
        string n = Console.ReadLine();
        int count = 0;

        //Створення стеку
        while (n == "y")
        {
            current = new Stack();
            Console.Write("Назва диска: ");
            current.Disk = Console.ReadLine();
            Console.Write("Розмiр диска (Gb): ");
            current.Memori_Size = int.Parse(Console.ReadLine());
            current.next = head;
            head = current;
            count++;
            Console.WriteLine("Ви бажаєте продовжити введення елементiв (y-так)");
            n = Console.ReadLine();
        }
        Console.WriteLine("Кiлькiсть елементiв в стеку: {0}", count);

        //Перегляд вмісту стеку
        //Стек не знищується
        current = head;
        while (current != null)
        {
            Console.WriteLine($"Диск: {current.Disk}\tРозмiр бал: {current.Memori_Size}");
            current = current.next;
        }
        Console.WriteLine("\nВведiть вiдомостi про новий диск:");

        //Додавання елемента в стек
        current = new Stack();
        Console.Write("Назва диска: ");
        current.Disk = Console.ReadLine();
        Console.Write("Розмiр диска (Gb): ");
        current.Memori_Size = int.Parse(Console.ReadLine());
        current.next = head;
        head = current;
        count++;
        Console.WriteLine("Количество елементов в стеку: {0}", count);
        current = head;
        while (current != null)
        {
            Console.WriteLine($"Диск: {current.Disk}\tРазмер бал: {current.Memori_Size}");
            current = current.next;
        }

        int max_value = int.MinValue;
        while (head != null)
        {
            if (head.Memori_Size > max_value)
                max_value = head.Memori_Size;
            head = head.next;
        }
        Console.WriteLine("Диск з максимальним размером: {0}", max_value);
        Console.WriteLine("\nСтек знищено");
        Console.ReadLine();
    }

Также не могу посчитать среднее арифметическое диске, пока программа делает так: добавляет останий элемент столько, сколько всех элементов в стеке и делит на их количество, а нужно чтобы добавлялся каждый элемент в стеке

 current = head;
        Stack average = current;
        double sum = 0;
        while (current != null)
        {
            sum += average.Memori_Size;
            current = current.next;
        }
        Console.WriteLine("Среднее арифметичиское дисков: {0}", sum/count);
        Console.ReadLine();

Ответы (1 шт):

Автор решения: Igor
    Stack current = head;
    Stack max = current;
    while (current != null)
    {
        if (current.Memori_Size > max.Memori_Size)
            max = current;
        current = current.next;
    }
    Console.WriteLine("Диск з максимальним размером: {0} - {1}", max.Disk, max.Memori_Size);
    Console.ReadLine();
→ Ссылка