Exemplo n.º 1
0
    // 노드 삭제
    public void Remove(DCLNode <T> n)
    {
        if (isEmpty)
        {
            //Console.WriteLine("삭제할 노드가 없습니다");
            Debug.Log("삭제할 노드가 없습니다");
            return;
        }

        --Length;
        // 삭제할 노드가 tail인 경우
        if (n == tail)
        {
            tail = tail.Remove().prev;
            return;
        }
        for (DCLNode <T> node = tail.next; node != tail; node = node.next)
        {
            if (n == node)
            {
                node.Remove();
                return;
            }
        }
    }
Exemplo n.º 2
0
 // 동서남북에 있는 탑다운카메라리그를 리스트에 넣어줌
 private void ListSetUp()
 {
     Transform[] transforms = GetComponentsInChildren <Transform>();
     camList = new DoublyCircularLinkedList <Transform>();
     for (int i = 1; i < transforms.Length; ++i)
     {
         camList.Add(transforms[i]);
     }
     iter = camList.front;
 }
Exemplo n.º 3
0
 // 인덱스 위치에 삽입
 public void Insert(T _data, int index)
 {
     ++Length;
     if (null == tail)
     {
         tail = new DCLNode <T>(_data);
         return;
     }
     Find(index).InsertNext(new DCLNode <T>(_data));
 }
Exemplo n.º 4
0
 // 리스트 마지막에 노드 삽입
 public void Add(T _data)
 {
     ++Length;
     if (null == tail)
     {
         tail = new DCLNode <T>(_data);
         return;
     }
     tail = tail.InsertNext(new DCLNode <T>(_data));
 }
Exemplo n.º 5
0
 // 노드 뒤에 삽입
 public DCLNode <T> InsertNext(DCLNode <T> node)
 {
     if (null != node)
     {
         node.prev = this;
         node.next = next;
         next.prev = node;
         next      = node;
     }
     return(node);
 }
Exemplo n.º 6
0
    IEnumerator IEnumerable.GetEnumerator()
    {
        if (current == null)
        {
            current = front;
        }
        do
        {
            yield return(current.data);

            current = current.next;
        } while (current != front);
    }
Exemplo n.º 7
0
    // 노드 출력
    public void Display()
    {
        if (null == tail)
        {
            //Console.WriteLine("리스트가 비어있습니다!");
            Debug.Log("리스트가 비어있습니다!");
            return;
        }
        DCLNode <T> n = tail.next;

        for (int i = 0; i < Length; ++i, n = n.next)
        {
            //Console.Write(i + "번지 원소 : ");
            Debug.Log(i + "번지 원소 : ");
            n.Display();
        }
        //Console.WriteLine("Tail : " + tail.data);
        Debug.Log("Tail : " + tail.data);
    }
Exemplo n.º 8
0
    // 해당 인덱스 노드 찾기
    public DCLNode <T> Find(int index)
    {
        // 인덱스 범위 벗어날 경우
        if (0 > index || index >= Length)
        {
            //Console.WriteLine("해당 번지의 노드는 존재하지 않습니다");
            Debug.Log("해당 번지의 노드는 존재하지 않습니다");
            return(null);
        }

        // 해당 인덱스 노드 탐색
        DCLNode <T> node = tail.next;

        while (0 != index)
        {
            --index;
            node = node.next;
        }
        return(node);
    }
Exemplo n.º 9
0
 public void Next()
 {
     iter = iter.next;
 }
Exemplo n.º 10
0
 public void Prev()
 {
     iter = iter.prev;
 }
Exemplo n.º 11
0
 public void Reset()
 {
     current = tail;
 }