Двусвязный список: Почему нельзя сравнить тип Т - C#

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

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

Листинг программы
  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. }
  18. }
  19. class GenericList<T>
  20. {
  21. private class Node
  22. {
  23. private Node next;//скрытая ссылка на следующий элемент
  24. public Node Next//свойство "следующий элемент"
  25. {
  26. get { return next; }
  27. set { next = value; }
  28. }
  29. private Node prev;//скрытая ссылка на следующий элемент
  30. public Node Prev//свойство "следующий элемент"
  31. {
  32. get { return prev; }
  33. set { prev = value; }
  34. }
  35. private T data;//переменная типа Т, хранит данные
  36. public T Data//свойство для получения и установки данных типа Т в элементе
  37. {
  38. get { return data; }
  39. set { data = value; }
  40. }
  41.  
  42. public Node(T t)
  43. {
  44. next = null;
  45. data = t;
  46. }
  47. }
  48. private Node head;//хранит ссылку на первый элемент в списке
  49. private Node tail;//хранит ссылку на последний элемент в списке
  50. public GenericList()//конструктор списка
  51. {
  52. head = null;
  53. tail = null;
  54. }
  55. public void Add(T t)
  56. {
  57. Node temp = new Node(t);
  58. if(head==null)
  59. {
  60. temp.Prev = null;
  61. head = tail = temp;
  62. }
  63. else
  64. {
  65. temp.Prev = tail;
  66. temp.Next = temp;
  67. tail = temp;
  68. }
  69. }
  70. public void Show()
  71. {
  72. ////ВЫВОДИМ СПИСОК С КОНЦА
  73. Node temp = tail;
  74. //Временный указатель на адрес последнего элемента
  75. while (temp != null) //Пока не встретится пустое значение
  76. {
  77. Console.WriteLine(temp.Data + " ");//Выводить значение на экран
  78. temp = temp.Prev; //Указываем, что нужен адрес предыдущего элемента
  79. }
  80. Console.WriteLine("\n");
  81. }
  82. public int GetIndex(T data)//достать индекс по значению элемента
  83. {
  84. Node temp = tail;
  85. T TEMP;
  86. while(temp!=null)
  87. {
  88. TEMP = temp.Data;
  89. if(data==TEMP)
  90. {
  91. }
  92. }
  93. }
  94. }
  95. }
if(data==TEMP) почему нельзя сравнить тип Т? Нужно перегрузить операцию ==? Если да, то как?

Решение задачи: «Двусвязный список: Почему нельзя сравнить тип Т»

textual
Листинг программы
  1. class NodeList<T>
  2.     {
  3.         // конструктор
  4.         public NodeList(T value)
  5.         {
  6.             Value = value;
  7.         }
  8.         // кастомный конструктор для вставки в середину
  9.         public NodeList(T value, NodeList<T> next)
  10.         {
  11.             Value = value;
  12.             Next = next;
  13.         }
  14.         // значение узла (data)
  15.         public T Value { get; set; }
  16.         // установка следущего узла в списке, если ничего то NULL (просто сам указатель)
  17.         public NodeList<T> Next { get; set; }
  18.     }

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


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

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

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

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

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

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