//在尾结点后插入新结点 public void Add(T value) { CirNode <T> newNode = new CirNode <T>(value); //判断当前链表是否为空 if (Count <= 0) { //插入的该节点就是尾节点 这里要注意是循环链表 tail = newNode; tail.Next = tail; currentPrev = tail; } else { //当前循环链表非空 则插入到链表尾部 //插入到链表末尾处 newNode.Next = tail.Next; //改变当前节点 其实就是改变头结点的前驱节点 if (currentPrev == tail) { currentPrev = newNode; } //给新的尾节点赋值 tail = newNode; } count++; }
//根据索引获取结点 public CirNode <T> GetNodeByIndex(int index) { //先判断索引是否越界 if (index < 0 || index > Count - 1) { throw new ArgumentOutOfRangeException("索引越界"); } //根据指定的尾节点 来获取到表面意思上的头结点 CirNode <T> tempNode = tail.Next; for (int i = 0; i < index; i++) { tempNode = tempNode.Next; } return(tempNode); }