Двусвязный список: Почему нельзя сравнить тип Т - C#
Формулировка задачи:
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();
}
}
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(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 int GetIndex(T data)//достать индекс по значению элемента
{
Node temp = tail;
T TEMP;
while(temp!=null)
{
TEMP = temp.Data;
if(data==TEMP)
{
}
}
}
}
}Решение задачи: «Двусвязный список: Почему нельзя сравнить тип Т»
textual
Листинг программы
class NodeList<T>
{
// конструктор
public NodeList(T value)
{
Value = value;
}
// кастомный конструктор для вставки в середину
public NodeList(T value, NodeList<T> next)
{
Value = value;
Next = next;
}
// значение узла (data)
public T Value { get; set; }
// установка следущего узла в списке, если ничего то NULL (просто сам указатель)
public NodeList<T> Next { get; set; }
}