/************************************************************* * Compilation: javac CircularQuote.java * Execution: java CircularQuote * Dependencies: none * * Code for a circular linked list. Each node of the linked * list is a Card class defined within this class. * Web Exercise 4.3.2 *************************************************************/ public class CircularQuote { // the first card in the circular linked list private Card start; // helper linked-list data type private class Card { private String word; private Card next; public Card(String word) { this.word = word; this.next = null; } } // constructor - create an empty quote public CircularQuote() { } // add the word w to the end of the quote public void addWord(String w) { // degenerate case for empty quote, w is the first word if (____________________) { } // otherwise, traverse list until card points to last word else { } // insert new word } } // number of words in the quote public int count() { } // return the ith word where i = 1 is first word in quote public String getWord(int i) { // check for less than i words in quote or invalid index if (count() < i || i <= 0) { throw new RuntimeException("index out of bounds"); } } // insert w after the ith word, where i = 1 is the first word public void insertWord(int i, String w) { // check for less than i words in quote or invalid index if (count() < i || i <= 0) throw new RuntimeException("index out of bounds"); // make Card for the new word // find the ith card // insert between ith card its current next } // string representation of the entire quote public String toString(){ } // test client public static void main(String[] args) { CircularQuote q = new CircularQuote(); q.addWord("A"); q.addWord("rose"); q.addWord("is"); q.addWord("a"); q.addWord("rose."); StdOut.println(q); StdOut.println(q.count()); StdOut.println(q.getWord(2)); q.insertWord(3, "just"); StdOut.println(q); StdOut.println(q.count()); } }