/// <summary> /// 获取倒数第几个 /// 1、index表示是倒数第index个节点 /// 2、先把链表从头到尾遍历,得到链表的总的长度 /// 3、得到size后,我们从链表的第一个开始遍历(size-index)个,就可以得到 /// </summary> /// <returns></returns> public HeroNode FindLastIndexNode(int index) { HeroNode temp = head; if (temp.Next == null) { return(null); } int size = GetLinkedListCount(); //得到链表的总长度 if (index <= 0 || index > size) //对index做个验证 { return(null); } for (int i = 0; i < size - index; i++) { temp = temp.Next; } return(temp.Next); }
/// <summary> /// 利用头插法来实现链表反转 /// </summary> /// <param name="heroNode"></param> public void ReverSetList() { var temp = head.Next; if (temp.Next == null || temp.Next.Next == null) //判断单列表是否等于空 or 单列表是否只有一个,无需反转 { return; } var reverSeHead = new HeroNode(0, "");//定义一个接收的容器 while (true) { var next = temp.Next; //定义记录当前节点下一个节点 temp.Next = reverSeHead.Next; reverSeHead.Next = temp; temp = next; if (next == null) { break; } } head.Next = reverSeHead.Next; }