2013-09-26 100 views
0

自從我訪問了SO以來已經有一段時間了。無論如何,讓我切入追逐。我有一個家庭作業,要求用鏈表和一個列表抽象數據類型執行各種任務。除了最後一個問題,我要求將ADT中的元素顛倒過來之外,我已經完成了所有工作。我已經爲鏈表完成了這項工作,但是我陷入了ADT部分的列表中。我的電訊管理局局長曾提及用ADT清單比用鏈表更容易,但我不知道從哪裏開始。也許我正在反思它。任何人都可以指引我朝着正確的方向嗎?這裏是我的逆序鏈接列表的僞代碼:顛倒列表中的元素ADT

c = pointer to current node 
p = pointer to previous node 
n = pointer to next node 
H = head pointer 

c <- H 
if (c.next != null) 
    n <- c.next 
while (n.next != null) { 
    p <- c 
    c <- n 
    n <- c.next 
    c.next -> p 
} 
if (H.next != null) 
    H.next -> n 
if (n != null AND c != null) 
    n.next -> c 

任何和所有幫助,將不勝感激。

回答

1

如果使用列表ADT他們的意思在Java中抽象List對象,那麼你可能只想看看使用Collections.reverse()

List<String> myList = new LinkedList<String>(); 
Collections.reverse(myList); 

如果你問爲「ADT」別的東西,然後通過各種意味着讓我知道

+0

感謝您的快速回復。然而,我的教授所要求的不是特定於Java。當他說ADT列表時,我認爲他意味着以一種可以使用基本數據結構(如數組或鏈表或類似的東西)實現的僞代碼。 – Mike

+0

在這種情況下,我會說看看迭代列表的值,並可能將它們反向放入新列表中。如果不允許使用新對象,則假設您可以使用索引,交換值也是可行的。 – Rogue

+0

我實際上去了辦公時間尋求幫助,並被告知,不要使用索引:(創建一個新的對象是唯一的方法,在這種情況下? – Mike