Реализация двунаправленного списка на C#
Формулировка задачи:
Помоги, пожалуйста. Как реализовать процедуры перемещения элементов двунаправленного списка в
очередь и наоборот, чтобы список реализовался с помощью указателей, стек - массивом?
Решение задачи: «Реализация двунаправленного списка на C#»
textual
Листинг программы
class Node<TYPE>
{
private TYPE Value;
private Node<TYPE> Up = null;
private Node<TYPE> Down = null;
public void AddToUp(TYPE NewValue)
{
this.Up = new Node<TYPE>(NewValue);
this.Up.Down = this;
}
public void AddToDown(TYPE NewValue)
{
this.Down = new Node<TYPE>(NewValue);
this.Down.Up = this;
}
public TYPE GetValue()
{
return this.Value;
}
public void SetValue(TYPE NewValue)
{
this.Value = NewValue;
}
public TYPE[] ToArray()
{
TYPE[] ResultMass;
Node<TYPE> ThisData = this;
while (ThisData.Up != null) ThisData = ThisData.Up;
Int32 KolOfEllements = new Int32();
while (ThisData.Down != null)
{
KolOfEllements++;
ThisData = ThisData.Down;
}
ResultMass = new TYPE[KolOfEllements];
KolOfEllements = new Int32();
while (ThisData.Up != null) ThisData = ThisData.Up;
while (ThisData.Down != null)
{
ResultMass[KolOfEllements++] = ThisData.GetValue();
ThisData = ThisData.Down;
}
return ResultMass;
}
public Int32 GetLength()
{
return this.ToArray().Length;
}
public Node()
{
this.Up = null;
this.Down = null;
}
public Node(TYPE Value)
{
this.Value = Value;
this.Up = null;
this.Down = null;
}
}