单链表练习3:单链表的反转

位置:class Test里,main方法外

		//将单链表反转
		public static void reverseList(HeroNode head) {
			//如果当前链表为空,或者只有一个结点,无需反转,直接返回
			if(head.next==null||head.next.next==null) {
				return;
			}
			
			//定义一个辅助的指针(变量),帮助我们遍历原来的链表
			HeroNode temp=head.next;
			HeroNode next=null;//指向当前结点temp的下一个结点
			HeroNode reverseHead=new HeroNode(0,"","");
			//遍历原来的链表,每遍历一个结点,就将其取出,并放在新的链表reverseHead的最前端
			while(temp!=null) {
				next=temp.next;//先暂时保存当前节点的下一个结点,因为后面需要使用
				
				//头插法
				temp.next=reverseHead.next;
				reverseHead.next=temp;
				
				temp=next;//将temp后移								
			}
			//将head.next指向reverseHead.next,实现单链表的反转
			head.next=reverseHead.next;
		}

main方法里:

		//测试一下单链表的翻转功能
		System.out.println("原来的链表情况~~");
		singleLinkedList.list();
		
		System.out.println("反转单链表~~");
		reverseList(singleLinkedList.getHead());
		singleLinkedList.list();

 

还有更多方法,详见http://c.biancheng.net/view/8105.html

posted @ 2022-04-07 14:00  SherryYuan  阅读(29)  评论(0)    收藏  举报