public void RemoveAt(int index) { int count = 0; LinkedNode <T> node = lastNode; while (node != null) { if (index == 0) //删除第一个节点 { if (firstNode.nextNode == null) //只有一个节点时 { firstNode = null; lastNode = null; } else//不止一个节点时 { firstNode = firstNode.nextNode; firstNode.lastNode.nextNode = null; firstNode.lastNode = null; } nodeCount--; break; } if (index == nodeCount - 1)//删除最后一个节点时 { lastNode = lastNode.lastNode; lastNode.nextNode.lastNode = null; lastNode.nextNode = null; nodeCount--; break; } if (index == count)//删除中间节点的情况 { node.lastNode.nextNode = node.nextNode; node.nextNode.lastNode = node.lastNode; nodeCount--; break; } if (index > nodeCount - 1 || index < 0)//索引器不合法 { Console.WriteLine("请输入正确的索引值!"); break; } node = node.lastNode; count++; } }
public void Add(T value) { LinkedNode <T> newNode = new LinkedNode <T>(value); if (firstNode == null) { firstNode = newNode; lastNode = newNode; } else { lastNode.nextNode = newNode; newNode.lastNode = lastNode; lastNode = newNode; } nodeCount++; }