public void DeleteNode(DoubleNode p) { if (Head != null && Head.Next != Head && Head.Prev != Head && p != null) // установлена? { p.Prev.Next = p.Next; // изменить поле связи предыдущего узла p.Next.Prev = p.Prev; // изменить поле связи следующего узла } }
public void Print(CycleDoubleLinkedList Q) { DoubleNode p = Head.Next; while (p != Head) { Console.Write(p.Info + " "); p = p.Next; } }
public void Create(int[] dates) // cоздание циклического списка { for (int i = 0; i < dates.Length; i++) { DoubleNode p = new DoubleNode(dates[i]); p.Next = Head; p.Prev = Head.Prev; Head.Prev.Next = p; Head.Prev = p; } }
public void InsertAfter(DoubleNode p, int data) { { if (p != null) { DoubleNode q = new DoubleNode(data); q.Next = p.Next; p.Next.Prev = q; p.Next = q; q.Prev = p; } } }
public void DeleteNodeNeedInfo(int data) { DoubleNode p = Head.Next; while (p != Head) { if (p.Info == data) { p.Prev.Next = p.Next; p.Next.Prev = p.Prev; } p = p.Next; } }
public void CreateSort(int[] dates) { for (int i = 0; i < dates.Length; i++) { DoubleNode p = Head.Next; DoubleNode q = new DoubleNode(dates[i]); while (p != Head && q.Info >= q.Info) { p = p.Next; } q.Next = p; q.Prev = p.Prev; p.Prev.Next = q; p.Prev = q; } }
public CycleDoubleLinkedList(int[] datas) { if (Head == null) { Head.Next = Head; Head.Prev = Head; } var q = Head; for (int i = 1; i < datas.Length; i++) { DoubleNode p = new DoubleNode(datas[i]); q.Next = p; Head.Prev = q.Next; p.Next = Head; p.Prev = q; q = q.Next; } }
public void Test(CycleDoubleLinkedList Q) { DoubleNode p = Head.Next; DoubleNode q = Q.Head.Next; DoubleNode q1 = Q.Head.Next.Next; while (p != Head && q.Next != Q.Head) { if (q1 != Head) { q.Next = p.Next; p.Next.Prev = q; q.Prev = p; p.Next = q; p = p.Next.Next; q = q1; q1 = q1.Next; } } q.Next = p.Next; p.Next.Prev = q; q.Prev = p; p.Next = q; }
} // ссылка на головной узел списка public CycleDoubleLinkedList() // создание элементарного двусвязного кольца { Head = new DoubleNode(); Head.Next = Head; Head.Prev = Head; }
public DoubleNode(int info, DoubleNode next, DoubleNode prev) : this(info) { Next = next; Prev = prev; }