免費開始練習
高考申論題 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(); } } }
ListTest 中”List list = new List<>();”會先後呼叫那些 methods?傳送那些參數值?結果新物件 list 的屬性值為何?
📝 此題為申論題

思路引導 VIP

  1. 追蹤建構子調用:這考的是 Constructor Chaining(建構子連鎖)。看到 new List<>(),先找無參數建構子,再看它裡面呼叫了什麼。
  2. 屬性初始化:觀察最後被呼叫的建構子如何給成員變數賦值(name, firstNode, lastNode)。
🤖
AI 詳解 AI 專屬家教

【考點分析】 本題考察 Java 建構子連鎖(Constructor Chaining)機制以及物件屬性初始化的過程。 【理論/法規依據】

▼ 還有更多解析內容

📝 同份考卷的其他題目

查看 108年[資訊處理] 程式語言 全題

升級 VIP 解鎖