IComparable для сортировки двусвязного списка - C#

Узнай цену своей работы

Формулировка задачи:

Как отсортировать с помощью IComparable?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _4laba
{
    class Program
    {
        static void Main(string[] args)
        {
            GenericList<int> list = new GenericList<int>();
            list.Add(10);
            list.Add(12);
            list.Add(13);
            list.Show();
            list.GetIndexFromTail(10);
 
            System.Console.ReadKey();
        }
    }
    class GenericList<T>
    {
        private class Node
        {
 
            private Node next;//скрытая ссылка на следующий элемент
            public Node Next//свойство "следующий элемент"
            {
                get { return next; }
                set { next = value; }
            }
            private Node prev;//скрытая ссылка на следующий элемент
            public Node Prev//свойство "следующий элемент"
            {
                get { return prev; }
                set { prev = value; }
            }
            private T data;//переменная типа Т, хранит данные
            public T Data//свойство для получения и установки данных типа Т в элементе
            {
                get { return data; }
                set { data = value; }
            }
 
            public Node()
            {
                next = null;
                data = default(T);
            }
 
            public Node(T t)
            {
                next = null;
                data = t;
 
            }
        }
        private Node head;//хранит ссылку на первый элемент в списке
        private Node tail;//хранит ссылку на последний элемент в списке
        public GenericList()//конструктор списка
        {
            head = null;
            tail = null;
        }
        public void Add(T t)
        {
            Node temp = new Node(t);
 
            if (head == null)
            {
                temp.Prev = null;
                head = tail = temp;
            }
            else
            {
                temp.Prev = tail;
                temp.Next = temp;
                tail = temp;
            }
 
        }

        public void Show()
        {
            ////ВЫВОДИМ СПИСОК С КОНЦА
            Node temp = tail;
            
            //Временный указатель на адрес последнего элемента
            while (temp != null) //Пока не встретится пустое значение
            {
                Console.WriteLine(temp.Data + " ");//Выводить значение на экран
                temp = temp.Prev; //Указываем, что нужен адрес предыдущего элемента
            }
            Console.WriteLine("\n");
        }

        public void GetIndexFromTail(T data)//достать индекс по значению элемента
        {
            Node temp = tail;
            int i = 0;
            while (temp != null)
            {
                if (data.Equals(temp.Data))
                {
                    
                    break;
                }
                else
                    temp = temp.Prev;
                i++;
            }
            if (temp == null)
            {
                System.Console.WriteLine("There`s no value {0}", data);
                
            }
            else
                System.Console.WriteLine( i);
        }

    }
}

Решение задачи: «IComparable для сортировки двусвязного списка»

textual
Листинг программы
public void Add(T t)
{
    Node temp = new Node(t)
    {
        Prev = tail,
        Next = head
    };
 
    if (head == null)
        head = tail = temp;
 
    tail.Next = temp;
    head.Prev = temp;
 
    tail = temp;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5
Похожие ответы