ฉันทำงานกับโปรเจ็กต์ Java สำหรับชั้นเรียนมาระยะหนึ่งแล้ว เป็นการนำรายการที่เชื่อมโยงไปใช้งาน (ที่นี่เรียกว่าAddressList
มีโหนดอย่างง่ายที่เรียกว่าListNode
) สิ่งที่จับได้คือทุกอย่างจะต้องทำด้วยอัลกอริธึมแบบวนซ้ำ ฉันสามารถทำทุกอย่างได้ดีโดยใช้วิธีเดียว:public AddressList reverse()
ListNode:
public class ListNode{
public String data;
public ListNode next;
}
ตอนนี้reverse
ฟังก์ชันของฉันเรียกใช้ฟังก์ชันตัวช่วยที่ใช้อาร์กิวเมนต์เพื่ออนุญาตให้เรียกซ้ำ
public AddressList reverse(){
return new AddressList(this.reverse(this.head));
}
ด้วยฟังก์ชันตัวช่วยของฉันมีลายเซ็นของ private ListNode reverse(ListNode current)
.
ในขณะนี้ฉันทำงานซ้ำ ๆ โดยใช้สแต็ก แต่นี่ไม่ใช่สิ่งที่ข้อกำหนดต้องการ ฉันพบอัลกอริทึมใน C ที่ย้อนกลับซ้ำและแปลงเป็นโค้ด Java ด้วยมือและมันใช้งานได้ แต่ฉันไม่เข้าใจมัน
แก้ไข: ไม่เป็นไรฉันคิดออกในระหว่างนี้
private AddressList reverse(ListNode current, AddressList reversedList){
if(current == null)
return reversedList;
reversedList.addToFront(current.getData());
return this.reverse(current.getNext(), reversedList);
}
ขณะที่ฉันอยู่ที่นี่มีใครเห็นปัญหาเกี่ยวกับเส้นทางนี้หรือไม่