Java单链表中的元素互换位置_某书2018提前批笔试题之单链表奇偶位置元素互换...

packageredbook;importjava.util.Scanner;/*** 题目:

以字符串形式构成单链表,将所有奇数位置上的元素一起前置到所有偶数位置上的元素的前面,不能申请额外空间,在o(n)时间内完成。

例如:

输入:1->2->3->4->5->6->7->8

输出:1->3->5->7->2->4->6->8->NULL

思路:

多找几个指针,动态链接。*/

public classMain3 {public static voidmain(String[] args) {

Scanner in=newScanner(System.in);while(in.hasNext()){//输入字符串

String line=in.nextLine();//切割字符串

String[] arr=line.split("->");//调用交换的方法

changeMethod(arr);

}

in.close();

}public static voidchangeMethod(String[] arr){//创建单链表

listNode oddPointer=null;

listNode pointer=null;

oddPointer=new listNode(Integer.parseInt(arr[0]),null);

pointer=oddPointer;for(int i=1;i

pointer.next=new listNode(Integer.parseInt(arr[i]),null);

pointer=pointer.next;

}

}//换位置

boolean flag=true;

listNode oddHeadPointer=oddPointer; //保存奇数位置头指针

listNode evenPointer=null;//偶数位置指针

listNode evenHeadPointer=null;//偶数位置头指针

if(oddHeadPointer.next!=null){

evenHeadPointer=evenPointer=oddHeadPointer.next;//初始化偶数位置头指针

pointer=evenPointer.next;//创建滑动的指针

while(pointer!=null){if(flag==true){ //创建奇数位置数字的链表

oddPointer.next=pointer;

pointer=pointer.next;

oddPointer=oddPointer.next;

flag=false;

}else{ //创建偶数位置数字的链表

evenPointer.next=pointer;

pointer=pointer.next;

evenPointer=evenPointer.next;

flag=true;

}

}

evenPointer.next=null;

oddPointer.next=evenHeadPointer; //把偶数位置的链表接在奇数位置链表的后面

}//打印输出换好位置的链表

while(oddHeadPointer!=null){

System.out.print(oddHeadPointer.val+"->");

oddHeadPointer=oddHeadPointer.next;

}

System.out.print("NULL");

System.out.println();

}//链表节点类

public static classlistNode{intval;

listNode next;

listNode(intval,listNode node){this.val =val;this.next =node;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值