Представление двустороннего связанного списка - PullRequest
0 голосов
/ 19 июля 2010

Как представить двухсторонний (двоякий) связанный список?

Ответы [ 3 ]

4 голосов
/ 19 июля 2010

Это связанный список, в котором каждый узел имеет ссылки на следующий и предыдущий узлы.

http://en.wikipedia.org/wiki/Doubly-linked_list

1 голос
/ 19 июля 2010

Псевдокод:

list-node
{
  some-data
  pointer-or-reference to prev-list-node
  pointer-or-reference to next-list-node
}

Таким образом, вы можете иметь:

current-node = beginning
current-node = current-node -> next-list-node
current-node = current-node -> prev-list-node

Чтобы «двигаться» вперед и назад.Синтаксис зависит от языка.

0 голосов
/ 19 июля 2010

В C #:

internal class ListNode<T> {

    public T Item { get; set; }
    public ListNode Prev { get; set; }
    public ListNode Next { get; set; }

}

public class List<T> {

    public List() { Head = Tail = null; }

    public void Add(T item) {
        var node = new ListNode<T>(item);
        if(IsEmpty)
           Head = Tail = node;
        else {
           node.Prev = Tail;
           Tail.Next = node;
           Tail = node;
        }        
    }

    protected ListNode<T> Head { get; set; }
    protected ListNode<T> Tail { get; set; }

    public bool IsEmpty { get { return Head == null; } }

}

и так далее ...

...