Reversing a Linked List

pleasanton 2013-10-05 10:12:10
方法很多,请贴一个你认为最好的方法
...全文
234 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
pleasanton 2013-10-05
  • 打赏
  • 举报
回复
引用 5 楼 huntor 的回复:
Collections public static void reverse(List<?> list)
没看懂? 大师能帮我改一下上面的CODE吗? 我不太会用<?>
pleasanton 2013-10-05
  • 打赏
  • 举报
回复
引用 4 楼 udbwcso 的回复:
随手写的,没有编译没有运行过,只是个思路而已 要是不知道那个方法是干啥的可以看一下api
多谢。我下面这个参考了你的思路,但有点笨


	public LinkedList reverse(LinkedList ll){
		LinkedList llResault = new LinkedList();
		int len = ll.size();
		while (len > 0) {
			llResault.add(ll.pollLast());
			--len;
		}
		return llResault;
		
	}

huntor 2013-10-05
  • 打赏
  • 举报
回复
Collections public static void reverse(List<?> list)
尘缘udbwcso 2013-10-05
  • 打赏
  • 举报
回复
随手写的,没有编译没有运行过,只是个思路而已 要是不知道那个方法是干啥的可以看一下api
pleasanton 2013-10-05
  • 打赏
  • 举报
回复
ll.offerFirst(ll.pollLast());?
pleasanton 2013-10-05
  • 打赏
  • 举报
回复
link.offerFirst() 有问题?
pleasanton 2013-10-05
  • 打赏
  • 举报
回复
引用 9 楼 udbwcso 的回复:
以前学C语言的时候写的和这个相似 java有已经实现了的,直接用就好了 如果是想了解链表看一下数据结构
改成这样,我就懂了


	Node previous = null;
		Node current = first;
		Node next = current.nextNode;
		
		current.nextNode = null; 
		while (next != null) {
			previous = current; 
			current = next; 
			next = next.nextNode; 
			current.nextNode = previous;
		
		}
	
		Node tep = first;
		first = last;
		last = tep;
尘缘udbwcso 2013-10-05
  • 打赏
  • 举报
回复
int len = link.size(); while(len > 0){ link.poolLast(link.offerFirst()); --len; }
尘缘udbwcso 2013-10-05
  • 打赏
  • 举报
回复
引用 8 楼 u011405885 的回复:
谁能看懂下面的CODE?晕哪

public class MyLinkedList {
	Node first, last = null;

	class Node {
		public int data;
		public Node next;
	}
		
	void addNode(int data) {
		Node myNode = new Node();
		myNode.data = data;
		myNode.next =null;

		if (first == null)
			first = myNode;
		if (last != null)
			last.next = myNode;
		last = myNode;
	}
	
	public void reverse() {
		
		if (null == first)
			return;
			
		Node p = null;
		Node c = first;
		Node n = c.next;
		
		c.next = p;
		while (n != null) {
			p = c; c = n; n = n.next; c.next = p;
		}
	
		Node t = first;
		first = last;
		last = t;
	}  
	
	void print() {
		for (Node myNode = first; myNode != null ; myNode = myNode.next ) 
			System.out.print(myNode.data +",");
		
	}

	//---------------------main()--------------------------
	public static void main(String[] args) {
		MyLinkedList myLinkedList = new MyLinkedList();

		myLinkedList.addNode(1);
		myLinkedList.addNode(2);
		myLinkedList.addNode(3);
		myLinkedList.addNode(4);
		myLinkedList.addNode(5);
		 	 
		myLinkedList.print();		
		
		myLinkedList.reverse();
		System.out.println();
		myLinkedList.print();		
	}
}



以前学C语言的时候写的和这个相似 java有已经实现了的,直接用就好了 如果是想了解链表看一下数据结构
pleasanton 2013-10-05
  • 打赏
  • 举报
回复
谁能看懂下面的CODE?晕哪

public class MyLinkedList {
	Node first, last = null;

	class Node {
		public int data;
		public Node next;
	}
		
	void addNode(int data) {
		Node myNode = new Node();
		myNode.data = data;
		myNode.next =null;

		if (first == null)
			first = myNode;
		if (last != null)
			last.next = myNode;
		last = myNode;
	}
	
	public void reverse() {
		
		if (null == first)
			return;
			
		Node p = null;
		Node c = first;
		Node n = c.next;
		
		c.next = p;
		while (n != null) {
			p = c; c = n; n = n.next; c.next = p;
		}
	
		Node t = first;
		first = last;
		last = t;
	}  
	
	void print() {
		for (Node myNode = first; myNode != null ; myNode = myNode.next ) 
			System.out.print(myNode.data +",");
		
	}

	//---------------------main()--------------------------
	public static void main(String[] args) {
		MyLinkedList myLinkedList = new MyLinkedList();

		myLinkedList.addNode(1);
		myLinkedList.addNode(2);
		myLinkedList.addNode(3);
		myLinkedList.addNode(4);
		myLinkedList.addNode(5);
		 	 
		myLinkedList.print();		
		
		myLinkedList.reverse();
		System.out.println();
		myLinkedList.print();		
	}
}



62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧