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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д