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

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

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

Как отсортировать с помощью IComparable?
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace _4laba
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. GenericList<int> list = new GenericList<int>();
  13. list.Add(10);
  14. list.Add(12);
  15. list.Add(13);
  16. list.Show();
  17. list.GetIndexFromTail(10);
  18. System.Console.ReadKey();
  19. }
  20. }
  21. class GenericList<T>
  22. {
  23. private class Node
  24. {
  25. private Node next;//скрытая ссылка на следующий элемент
  26. public Node Next//свойство "следующий элемент"
  27. {
  28. get { return next; }
  29. set { next = value; }
  30. }
  31. private Node prev;//скрытая ссылка на следующий элемент
  32. public Node Prev//свойство "следующий элемент"
  33. {
  34. get { return prev; }
  35. set { prev = value; }
  36. }
  37. private T data;//переменная типа Т, хранит данные
  38. public T Data//свойство для получения и установки данных типа Т в элементе
  39. {
  40. get { return data; }
  41. set { data = value; }
  42. }
  43. public Node()
  44. {
  45. next = null;
  46. data = default(T);
  47. }
  48. public Node(T t)
  49. {
  50. next = null;
  51. data = t;
  52. }
  53. }
  54. private Node head;//хранит ссылку на первый элемент в списке
  55. private Node tail;//хранит ссылку на последний элемент в списке
  56. public GenericList()//конструктор списка
  57. {
  58. head = null;
  59. tail = null;
  60. }
  61. public void Add(T t)
  62. {
  63. Node temp = new Node(t);
  64. if (head == null)
  65. {
  66. temp.Prev = null;
  67. head = tail = temp;
  68. }
  69. else
  70. {
  71. temp.Prev = tail;
  72. temp.Next = temp;
  73. tail = temp;
  74. }
  75. }
  76.  
  77. public void Show()
  78. {
  79. ////ВЫВОДИМ СПИСОК С КОНЦА
  80. Node temp = tail;
  81. //Временный указатель на адрес последнего элемента
  82. while (temp != null) //Пока не встретится пустое значение
  83. {
  84. Console.WriteLine(temp.Data + " ");//Выводить значение на экран
  85. temp = temp.Prev; //Указываем, что нужен адрес предыдущего элемента
  86. }
  87. Console.WriteLine("\n");
  88. }
  89.  
  90. public void GetIndexFromTail(T data)//достать индекс по значению элемента
  91. {
  92. Node temp = tail;
  93. int i = 0;
  94. while (temp != null)
  95. {
  96. if (data.Equals(temp.Data))
  97. {
  98. break;
  99. }
  100. else
  101. temp = temp.Prev;
  102. i++;
  103. }
  104. if (temp == null)
  105. {
  106. System.Console.WriteLine("There`s no value {0}", data);
  107. }
  108. else
  109. System.Console.WriteLine( i);
  110. }
  111.  
  112. }
  113. }

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

textual
Листинг программы
  1. public void Add(T t)
  2. {
  3.     Node temp = new Node(t)
  4.     {
  5.         Prev = tail,
  6.         Next = head
  7.     };
  8.  
  9.     if (head == null)
  10.         head = tail = temp;
  11.  
  12.     tail.Next = temp;
  13.     head.Prev = temp;
  14.  
  15.     tail = temp;
  16. }

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


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

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

13   голосов , оценка 4.154 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы