高考申論題
108年
[資訊處理] 程式語言
第 ⑵ 題
📖 題組:
下列為資料結構 List 的 Java 程式,而 ListTest 為測試類別(class),試回答以下問題:(35 分) class ListNode
{
T data;
ListNode nextNode;
ListNode(T object)
{
this(object, null);
}
ListNode(T object, ListNode node)
{
data = object;
nextNode = node;
}
T getData() { return data; } // 補全程式意涵
ListNode getNext() { return nextNode; } // 補全程式意涵
}
public class List
{
private ListNode firstNode;
private ListNode lastNode;
private String name;
public List()
{
this("list");
}
public List(String listName)
{
name = listName;
firstNode = lastNode = null;
}
public void insertAtFront(T insertItem)
{
if (isEmpty()) firstNode = lastNode = new ListNode(insertItem);
else firstNode = new ListNode(insertItem, firstNode);
}
public void insertAtBack(T insertItem) { /* 略 */ }
public T removeFromFront() throws EmptyListException
{
if (isEmpty()) throw new EmptyListException(name);
T removedItem = firstNode.data;
if (firstNode == lastNode) firstNode = lastNode = null;
else firstNode = firstNode.nextNode;
return removedItem;
}
public T removeFromBack() throws EmptyListException { /* 待撰寫 */ }
public boolean isEmpty() { return firstNode == null; }
public void print()
{
if (isEmpty())
{
System.out.printf("Empty %s%n", name);
return;
}
System.out.printf("The %s is: ", name);
ListNode current = firstNode;
while (current != null)
{
System.out.printf("%s ", current.data);
current = current.nextNode;
}
System.out.println();
}
}
public class EmptyListException extends RuntimeException
{
public EmptyListException() { this("List"); }
public EmptyListException(String name) { super(name + " is empty"); }
}
public class ListTest
{
public static void main(String[] args)
{
List list = new List<>();
try
{
list.insertAtFront(-1);
list.insertAtFront(99);
list.print();
int removedItem = list.removeFromFront();
removedItem = list.removeFromFront();
list.print();
removedItem = list.removeFromFront();
list.print();
}
catch (EmptyListException emptyListException)
{
emptyListException.printStackTrace();
}
}
}
下列為資料結構 List 的 Java 程式,而 ListTest 為測試類別(class),試回答以下問題:(35 分) class ListNode
執行 ListTest.java 後會列印出什麼?
📝 此題為申論題
思路引導 VIP
- 模擬執行流程:一步步執行
main裡的程式碼。 - 注意 Stack/List 行為:
insertAtFront是從頭部加入。先加 -1,再加 99,鏈結應為 99 -> -1。
🤖
AI 詳解
AI 專屬家教
【考點分析】 本題考察對 Linked List 資料結構操作(從前端插入與刪除)的追蹤能力,以及例外處理的執行流程。 【分析與論述】
▼ 還有更多解析內容