链表的逆转 -- java实现

  链表的逆转也算是面试中比较常见的问题了,今天闲来无聊,就写了一下一个简单的实现。

  这里我并没有用java里面的LinkedList类来写,而是自己写了个简单的链表结构,这里只是用来建一个链表,具体的操作方法并没有详写:

  

package normal;

public class LL {
	
	public Node head;
	
	class Node{
		String value;
		Node next;
		public Node(String value){
			this.value = value;
		}
	}
	
	public LL(String[] arr){
		if(arr.length != 0){
			Node node = new Node(arr[0]);
			this.head = node;
			for(int i=1; i<arr.length; i++){
				node.next = new Node(arr[i]);
				node = node.next;
			}
		}
		else
			this.head = null;
		
	}
	
	public Node add(String value){
		return head;
	}
}
  然后是具体的链表逆转的操作:

package normal;

import java.util.LinkedList;

import normal.LL.Node;

public class ReverseLL {
	
	

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 ReverseLL o = new ReverseLL();
		 LL ll = o.createLL();
		 Node node = o.reverse(ll);
	}
	
	private Node reverse(LL ll) {
		// TODO Auto-generated method stub
		Node pre = null;
		Node cen = ll.head;
		Node pos = cen.next;
		while(cen!=null){
			cen.next = pre;
			pre = cen;
			cen = pos;
			if (pos!=null)  pos = pos.next;
		}
		return pre;
	}

	public LL createLL(){
		String[] arr = {"1","2","3","4","5"};
		LL ll = new LL(arr);
		
		return ll;
	}
	
}
最后的node即是所得逆转链表的head节点。

  




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值