示例#1
0
文件: LList1.cs 项目: MGnuskina/Tasks
 public void AddPos(int pos, int element)
 {
     if (root == null)
     {
         throw new InvalidOperationException("This method can't be used for an empty AList0");
     }
     if (Size() <= pos)
     {
         throw new ArgumentOutOfRangeException("There is no element in the position {0}", pos.ToString());
     }
     Node nodeNow = root;
     Node nodeToAddTo = root;
     int i = 0;
     while (i < pos)
     {
         i++;
         nodeNow = nodeNow.next;
         if (i == pos - 1)
         {
             nodeToAddTo = nodeNow;
         }
     }
     Node tmpNode = nodeNow;
     Node newNode = new Node(element, tmpNode);
     if (pos != 0)
     {
         nodeToAddTo.next = newNode;
     }
     else
     {
         root = newNode;
     }
 }
示例#2
0
        public int CalcSize(Node node, ref int size)
        {
            size++;

            if (node.Left != null)
            {
                CalcSize(node.Left, ref size);
            }
            if (node.Right != null)
            {
                CalcSize(node.Right, ref size);
            }

            return size;
        }
示例#3
0
        public void AddEnd(int a)
        {
            if (headNode == null)
            {
                headNode = new Node();
                headNode.Value = a;
                tailNode = this.headNode;
                headNode.Next = null;
            }
            else
            {
                Node newNode = new Node(a, null);
                tailNode.Next = newNode;
            }

            Size++;
        }
示例#4
0
        public void AddPos(int a, int pos)
        {
            Size++;

            Node tempNode = headNode;
            int i = 1;

            while (pos != i)
            {
                tempNode = tempNode.Next;
                i++;
            }

            tempNode = new Node(a, tempNode, tempNode.Next);
            tempNode.Previous.Next = tempNode;
            tempNode.Next.Previous = tempNode;
        }
示例#5
0
文件: LList1.cs 项目: MGnuskina/Tasks
 public void AddEnd(int element)
 {
     if (root == null)
     {
         SetUpRoot();
         root.value = element;
     }
     else
     {
         Node nodeNow = root;
         Node newNode = new Node(element, null);
         while (nodeNow.next != null)
         {
             nodeNow = nodeNow.next;
         }
         nodeNow.next = newNode;
     }
 }
示例#6
0
 public void Add(int val)
 {
     if (rootNode == null)
     {
         rootNode = new Node();
     }
     else
     {
         Node newNode = Search(rootNode, val);
         if (val < newNode.Value)
         {
             newNode.Left = new Node(val, null, null);
         }
         else
             if (val > newNode.Value)
         {
             newNode.Right = new Node(val, null, null);
         }
     }
 }
示例#7
0
        public void AddStart(int a)
        {
            headNode = new Node(a, null, headNode);

            if (headNode.Next != null)
            {
                headNode.Next.Previous = headNode;
            }

            if (headNode.Next == null)
            {
                tailNode = headNode;
            }

            if (headNode == null)
            {
                Size = 0;
            }
            else
            {
                Size++;
            }
        }
示例#8
0
        public void AddPos(int a, int pos)
        {
            if (headNode == null)
            {
                headNode = new Node();
                headNode.Value = a;
                tailNode = headNode;
                headNode.Next = null;
            }
            else
            {
                Node tempNode = headNode;
                Node newNode = new Node(a, null);
                pos--;
                for (int i = 0; i < Size; i++)
                {
                    if (pos > i )
                    {
                        tempNode = tempNode.Next;
                    }
                    else
                        if (pos - i == 0)
                        {
                            newNode.Next = tempNode.Next;
                            tempNode.Next = newNode;
                        tempNode = tempNode.Next;
                        }
                    else
                        if (pos < i)
                        {
                            tempNode = tempNode.Next;
                        }
                }
            }

            Size++;
        }
示例#9
0
文件: LListR.cs 项目: MGnuskina/Tasks
 public void AddEnd(int element)
 {
     if (root == null)
     {
         root = new Node(element);
         root.rear = root;
         root.front = root;
     }
     else
     {
         Node newNode = new Node(element, root, root.rear);
         if (Size() == 1)
         {
             root.front = newNode;
             root.rear = newNode;
             newNode.rear = root;
         }
         else
         {
             root.rear.front = newNode;
             root.rear = newNode;
         }
     }
 }
示例#10
0
 public void AddEnd(int a)
 {
     tailNode = new Node(a, tailNode, null);
     tailNode.Previous.Next = tailNode;
     Size++;
 }
示例#11
0
文件: LList1.cs 项目: MGnuskina/Tasks
        public void Init(int[] array)
        {
            if (array.Length > 0)
            {
                SetUpRoot();
                root.value = array[0];
                Node nodeNow = root;
                Node newNode;
                for (int i = 1; i < array.Length; i++)
                {
                    newNode = new Node(array[i], null);
                    nodeNow.next = newNode;
                    nodeNow = newNode;
                }

            }
        }
示例#12
0
文件: LList1.cs 项目: MGnuskina/Tasks
 public Node(int val, Node node)
 {
     value = val;
     next = node;
 }
示例#13
0
 public void DelEnd()
 {
     tailNode = tailNode.Previous;
     tailNode.Next = null;
     Size--;
 }
示例#14
0
文件: LListR.cs 项目: MGnuskina/Tasks
 public int DelStart()
 {
     if (root == null)
     {
         throw new InvalidOperationException("This method can't be used for an empty AList0");
     }
     int res = root.value;
     if (Size() == 1)
     {
         root = null;
     }
     else
     {
         root.front.rear = root.rear;
         root.rear.front = root.front;
         root = root.front;
     }
     return res;
 }
示例#15
0
文件: LListR.cs 项目: MGnuskina/Tasks
 public Node(int val, Node nodeFront, Node nodeRear)
 {
     value = val;
     front = nodeFront;
     rear = nodeRear;
 }
示例#16
0
 public void DelEnd()
 {
     tailNode = tailNode.Previous;
     tailNode.Next = headNode;
     Size--;
 }
示例#17
0
        public int FindHeight(Node node, ref int count)
        {
            if (node == null)
                return 0;

            int heightLeft = FindHeight(node.Left, ref count);
            int heightRight = FindHeight(node.Right, ref count);

            if (heightLeft > heightRight)
                count = heightLeft + 1;
            else
                count = heightRight + 1;

            return count;
        }
示例#18
0
 public void Clear()
 {
     rootNode = new Node();
 }
示例#19
0
 public void Clear()
 {
     headNode = null;
     tailNode = null;
 }
示例#20
0
文件: LListR.cs 项目: MGnuskina/Tasks
 public void AddPos(int pos, int element)
 {
     if (root == null)
     {
         throw new InvalidOperationException("This method can't be used for an empty AList0");
     }
     int size = Size();
     if (size <= pos)
     {
         throw new ArgumentOutOfRangeException("There is no element in the position {0}", pos.ToString());
     }
     if (pos == 0)
     {
         AddStart(element);
     }
     else
     {
         Node nodeNow = root;
         int i;
         if (pos <= (size - 1) / 2.0)
         {
             i = 0;
             while (i < pos)
             {
                 i++;
                 nodeNow = nodeNow.front;
             }
         }
         else
         {
             i = size;
             while (i > pos)
             {
                 i--;
                 nodeNow = nodeNow.rear;
             }
         }
         Node newNode = new Node(element, nodeNow, nodeNow.rear);
         nodeNow.rear.front = newNode;
         nodeNow.rear = newNode;
     }
 }
示例#21
0
文件: LList1.cs 项目: MGnuskina/Tasks
 public int DelEnd()
 {
     if (root == null)
     {
         throw new InvalidOperationException("This method can't be used for an empty AList0");
     }
     int res = root.value;
     if (Size() == 1)
     {
         root = null;
     }
     else
     {
         Node nodeNow = root;
         Node prevNow = root;
         while (nodeNow.next != null)
         {
             prevNow = nodeNow;
             nodeNow = nodeNow.next;
         }
         res = nodeNow.value;
         prevNow.next = null;
     }
     return res;
 }
示例#22
0
文件: LListR.cs 项目: MGnuskina/Tasks
 public void AddStart(int element)
 {
     if (root == null)
     {
         root = new Node(element, root, root);///??????
         root.front = root;
         root.rear = root;
     }
     else
     {
         Node newNode = new Node(element, root, root.rear);
         if (Size() > 1)
         {
             root.rear.front = newNode;
             root.rear = newNode;
         }
         else
         {
             root.rear = newNode;
             root.front = newNode;
         }
         root = newNode;
     }
 }
示例#23
0
文件: LList1.cs 项目: MGnuskina/Tasks
 public int DelStart()
 {
     if (root == null)
     {
         throw new InvalidOperationException("This method can't be used for an empty AList0");
     }
     int res = root.value;
     root = root.next;
     return res;
 }
示例#24
0
 public void DelStart()
 {
     headNode = headNode.Next;
     headNode.Previous = null;
     Size--;
 }
示例#25
0
文件: LList1.cs 项目: MGnuskina/Tasks
 private void SetUpRoot()
 {
     root = new Node();
 }
示例#26
0
文件: LList1.cs 项目: MGnuskina/Tasks
 public void AddStart(int element)
 {
     if (root == null)
     {
         SetUpRoot();
         root.value = element;
     }
     else
     {
         Node nodeNow = root;
         root = new Node(element, nodeNow);
     }
 }
示例#27
0
        public void Reverse()
        {
            Node tempNode = tailNode;
            Node tailRev = new Node();

            while (tempNode != headNode)
            {
                tailRev = new Node(tempNode.Value, tailRev, null);

                if (tailRev.Previous == null)
                {
                    tailRev.Previous.Next = tailRev;
                    Console.Write(tailRev.Value + " ");
                }

                tempNode = tempNode.Previous;
            }

            headNode = tailRev;

            if (headNode.Next == null)
            {
                tailNode = headNode;
            }
        }
示例#28
0
 public Node(int val, Node left, Node right)
 {
     Value = val;
     Left = left;
     Right = right;
 }
示例#29
0
文件: LList1.cs 项目: MGnuskina/Tasks
 public void Clear()
 {
     root = null;
 }
示例#30
0
 public Node(int value, Node previous, Node next)
 {
     Value = value;
     Previous = previous;
     Next = next;
 }