单链表的面试题分享
1、单链表按顺序添加元素
代码如下:
public void addByOrder(HeroNode node){ if(headNode.next==null){ headNode.next=node; return; } HeroNode cur=headNode.next; while (true){ //找到合适的那个位置 if(cur.next.heroNo>node.heroNo){ break; } cur=cur.next; } //找到合适位置了之后,拆开来 HeroNode tempNode=cur.next; cur.next=node; node.next=tempNode; }
2、单链表的反转
方法一:
如下图所示:
代码如下:
public void reverse(){ if(headNode.next==null){ System.out.println("链表为空"); return; } HeroNode reverseHead=new HeroNode("","",0); //把链表数据,一个个读取出来,加入到新的链表中。 HeroNode tempNode=headNode.next; while (true){ if(tempNode.next==null){ break; } //每次都加入到最前面。 HeroNode rsNode=new HeroNode(tempNode.heroName,tempNode.nickName,tempNode.heroNo); if(reverseHead.next==null){ reverseHead.next=rsNode; }else{ HeroNode tempReserveNode=reverseHead.next; reverseHead.next=rsNode; rsNode.next=tempReserveNode; } tempNode=tempNode.next; } headNode.next=reverseHead.next; }
终极目标:世界大同