/// <summary> /// 追加一个元素 /// </summary> /// <param name="data"></param> public void Add(T data) { var newNode = new LinkListNode <T>(data); // Length为0,代表当前链表是空的 // 直接把新节点放入头节点 if (Length == 0) { Head = newNode; Length++; return; } // 找到最后一个节点,将新节点放入Next指针下 this.Last.Next = newNode; Length++; }
/// <summary> /// 追加一个元素 /// </summary> /// <param name="data"></param> public void Add(T data) { var newNode = new LinkListNode <T>(data); // Length为0,代表当前链表是空的 // 直接把新节点作为尾节点,并将尾节点的下一个节点指向自己 if (Length == 0) { Rear = newNode; Rear.Next = Rear; Length++; return; } // 设置新节点的下一个节点为头节点 // 设置当前尾节点的下一个节点为新节点 // 将新节点设置为尾节点 newNode.Next = Rear.Next; Rear.Next = newNode; Rear = newNode; Length++; }
/// <summary> /// 插入 /// </summary> /// <param name="index"></param> /// <param name="item"></param> public void Insert(int index, T item) { // index溢出 if (index < 0 || index > Length - 1) { return; } // index为0,代表要插入头部 // 将新节点的Next指针指向当前头节点 // 并将新节点直接作为头节点 if (index == 0) { var newHead = new LinkListNode <T>(item, Rear.Next); Rear.Next = newHead; Length++; return; } // 找到前继节点 int prevIndex = index - 1; var prevNode = Get(prevIndex); if (prevNode == null) { return; } // 找到指定index对应的节点(前继节点的Next指针指向的节点) // 将新节点的Next指针指向index对应节点的Next指针指向的节点 // 前继节点的Next指针指向新节点,完成新节点的插入操作 var newNode = new LinkListNode <T>(item, prevNode.Next); prevNode.Next = newNode; Length++; }