[Hỏi]Đảo danh sách liên kết đơn bằng Java.

meocon123

New Member
24/2/11
202
11
0
Bạn nào có code bài này xin giúp mình với, thực sự là mình không có ý tưởng nào cho bài này cả. Thanks!!!
 
20/5/10
144
2
18
Ðề: [Hỏi]Đảo danh sách liên kết đơn bằng Java.

Duyệt theo 2 chiều thì chuyển sang kép xài cho nó khỏe, mà lại tối ưu tốn ít chi phí. Danh sách đơn chi duyệt theo một chiều
 

meocon123

New Member
24/2/11
202
11
0
Ðề: [Hỏi]Đảo danh sách liên kết đơn bằng Java.

À mình làm được rồi, sẵn đây post mã lên cho bạn nào cần thì tham khảo:
PHP:
public void reverse(){
Link B = null;
Link C = null;
while(first==null){
B = first;
first = first.next;
B.next = C;
C = B;
}
first = B;
}
 
20/5/10
144
2
18
Ðề: [Hỏi]Đảo danh sách liên kết đơn bằng Java.

À mình làm được rồi, sẵn đây post mã lên cho bạn nào cần thì tham khảo:
PHP:
public void reverse(){
Link B = null;
Link C = null;
while(first==null){
B = first;
first = first.next;
B.next = C;
C = B;
}
first = B;
}
hic, khó hiểu gì hết, theo như code trên thì first = null, sau đó b = null (vì b = first), sau đó lệnh first = first.next (nhưng lúc này first = null mà), , C cũng = null lun thì phải.
Bạn có thể share code Link và first AE tham khao đc k ? :)
 

meocon123

New Member
24/2/11
202
11
0
Ðề: [Hỏi]Đảo danh sách liên kết đơn bằng Java.

hic, khó hiểu gì hết, theo như code trên thì first = null, sau đó b = null (vì b = first), sau đó lệnh first = first.next (nhưng lúc này first = null mà), , C cũng = null lun thì phải.
Bạn có thể share code Link và first AE tham khao đc k ? :)
Link.java
PHP:
package linkedList1;

public class Link {
	public int iData;
	public double dData;
	public Link next;
	
	public Link(int id, double dd){
		iData = id;
		dData = dd;
	}
	
	public void displayLink(){
		System.out.print("{ " + iData+", "+dData+" }");
	}
	
}
LinkList.java
PHP:
package linkedList1;

public class LinkList {
	private Link first;
	
	public LinkList(){
		first = null;
	}
	
	public boolean isEmpty(){
		return first == null;
	}
	
	public void insertFirst(int id, double dd){
		Link newLink = new Link(id, dd);
		newLink.next = first;
		first = newLink;
	}
	
	public Link deleteFirst(){
		Link temp = first;
		first = first.next;
		return temp;
	}
	
	public void deleteLast(){
		if(first.next==null){
			deleteFirst();
		}
		else
		{
			Link p = first;
			Link q = first;
			while(p.next!=null){
				p=p.next;
			}
			while(q.next!=p){
				q=q.next;
			}
			q.next=null;
		}
}
	
	public void displayList(){
		if(first==null)
			System.out.print("List is empty");
		else
		{
			System.out.print("List (first-->last): ");
			Link current = first;
			while(current!=null){
			current.displayLink();
			current = current.next;
			}
			System.out.println("");;
		}
	}
	
	public void reserve(){
		Link B = null;
		Link C = null;
		while(first!=null){
			B = first;
			first = first.next;
			B.next = C;
			C = B;
		}
		first = B;
	}
	
}
LinkListApp.java
PHP:
package linkedList1;

public class LinkListApp {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		LinkList theList = new LinkList();
		theList.insertFirst(22, 2.99);
		theList.insertFirst(44, 4.99);
		theList.insertFirst(66, 6.99);
		theList.insertFirst(88, 8.99);
		
		theList.displayList();
		theList.reserve();
		System.out.println("List after reserve:");
		theList.displayList();
		
	/*	while(!theList.isEmpty()){
			Link aLink = theList.deleteFirst();
			System.out.print("Deleted");
			aLink.displayLink();
			System.out.println("");
		}*/
		theList.deleteFirst();
		theList.deleteLast();
		
		theList.displayList();
	}

}