我需要爲鏈表隊列實現toString()遞歸方法。我知道我的toString方法在我上週做的鏈表實現上很好,所以我在處理Queue方面有些問題。對於QueueList遞歸toString在Java中的隊列鏈接列表
public String toString()
{
if (front.info == null)
{
System.out.println("Error, queue is empty");
return "";
}
if (front.link == null) //base case: if this is last element in stack
{
return (" \"" + front.info + "\" , ");
}
else //normal recursive function
{
return (" \"" + front.info + "\" , " + front.link.toString());
}
}
和我的建設者和這樣的:我QueueList
toString方法
public class QueueNode
{
E info;
QueueNode link;
}
private QueueNode front;//first element to be placed into queue
private QueueNode rear;//last element to be placed into queue
private int NoE;//counter for number of elements in queue
public QueueList()
{
front = null;
rear = null;
NoE = 0;
}
我想看看使用這個測試發生了什麼事情在裏面:
public boolean test() {
QueueList<String> q = new QueueList<String>();
q.enqueue("The Godfather");
q.enqueue("Casino");
q.enqueue("Goodfellas");
String r = q.toString();
q.PrettyPrint();
與輸出
IN -> [ "The Godfather" , [email protected]] -> OUT.
我知道這是因爲我告訴在toString
方法的遞歸部分說front.link.toString()
,但即使我將其更改爲front.link.info.toString()
,我的輸出是
IN -> [ "The Godfather" , Casino] -> OUT.
這可能是可能的東西然後用我的入隊和出隊方法,如下所示:
public void enqueue(E element)
{
QueueNode newNode = new QueueNode();//creates new Node to hold element
newNode.info = element;//set info of new Node to element
newNode.link = null;//make link null since it's at back of list
if (rear == null)//checks if queue is empty
{
front = newNode;
}
else
{
rear.link = newNode;//sets second to last node's link to newNode
}
rear = newNode;//makes newNode the new last link
NoE++;//increase counter
}
public E dequeue() throws InvalidOperationException
{
if (front == null)//sanitize code
{
throw new InvalidOperationException("There is nothing in the queue.");
}
E element = front.info;//creates an element file that takes the info in front of queue
front = front.link;//makes second-to-front element new front
if (front == null)//if this emptied the queue, make sure rear is also empty
{
rear = null;
}
NoE--;//reduce counter
return element;
}
請幫助我,如果你可以。謝謝。
我感覺類似,並且反覆地寫下來,當我進入我的教授看看另一個與任務有關的問題時,她說如果我沒有遞歸地寫它,我可能會失分。感謝您的答覆。 –
對不起,但你的教授錯了。這不是一個遞歸問題,你的直覺是正確的。我已更新我的回答 –
我同意你100%。我的代碼終於起作用了,非常感謝你的幫助。 –