<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.lensovet.net/~sysadmin/w/index.php?action=history&amp;feed=atom&amp;title=Computer_Science%2F61b%2FHomework%2Fhw5%2FSet.java</id>
	<title>Computer Science/61b/Homework/hw5/Set.java - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://www.lensovet.net/~sysadmin/w/index.php?action=history&amp;feed=atom&amp;title=Computer_Science%2F61b%2FHomework%2Fhw5%2FSet.java"/>
	<link rel="alternate" type="text/html" href="http://www.lensovet.net/~sysadmin/w/index.php?title=Computer_Science/61b/Homework/hw5/Set.java&amp;action=history"/>
	<updated>2026-05-02T22:53:25Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>http://www.lensovet.net/~sysadmin/w/index.php?title=Computer_Science/61b/Homework/hw5/Set.java&amp;diff=24329&amp;oldid=prev</id>
		<title>Lensovet: Lensovet moved page CS/61b/Homework/hw5/Set.java to Computer Science/61b/Homework/hw5/Set.java</title>
		<link rel="alternate" type="text/html" href="http://www.lensovet.net/~sysadmin/w/index.php?title=Computer_Science/61b/Homework/hw5/Set.java&amp;diff=24329&amp;oldid=prev"/>
		<updated>2023-02-20T03:51:35Z</updated>

		<summary type="html">&lt;p&gt;Lensovet moved page &lt;a href=&quot;/~sysadmin/w/CS/61b/Homework/hw5/Set.java&quot; class=&quot;mw-redirect&quot; title=&quot;CS/61b/Homework/hw5/Set.java&quot;&gt;CS/61b/Homework/hw5/Set.java&lt;/a&gt; to &lt;a href=&quot;/~sysadmin/w/Computer_Science/61b/Homework/hw5/Set.java&quot; title=&quot;Computer Science/61b/Homework/hw5/Set.java&quot;&gt;Computer Science/61b/Homework/hw5/Set.java&lt;/a&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 03:51, 20 February 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Lensovet</name></author>
		
	</entry>
	<entry>
		<id>http://www.lensovet.net/~sysadmin/w/index.php?title=Computer_Science/61b/Homework/hw5/Set.java&amp;diff=4017&amp;oldid=prev</id>
		<title>Lensovet: moved CS 61b/Homework/hw5/Set.java to CS/61b/Homework/hw5/Set.java:&amp;#32;fix cs 61b hierarchy</title>
		<link rel="alternate" type="text/html" href="http://www.lensovet.net/~sysadmin/w/index.php?title=Computer_Science/61b/Homework/hw5/Set.java&amp;diff=4017&amp;oldid=prev"/>
		<updated>2010-11-14T06:00:19Z</updated>

		<summary type="html">&lt;p&gt;moved &lt;a href=&quot;/~sysadmin/w/CS_61b/Homework/hw5/Set.java&quot; class=&quot;mw-redirect&quot; title=&quot;CS 61b/Homework/hw5/Set.java&quot;&gt;CS 61b/Homework/hw5/Set.java&lt;/a&gt; to &lt;a href=&quot;/~sysadmin/w/CS/61b/Homework/hw5/Set.java&quot; class=&quot;mw-redirect&quot; title=&quot;CS/61b/Homework/hw5/Set.java&quot;&gt;CS/61b/Homework/hw5/Set.java&lt;/a&gt;: fix cs 61b hierarchy&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 06:00, 14 November 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Lensovet</name></author>
		
	</entry>
	<entry>
		<id>http://www.lensovet.net/~sysadmin/w/index.php?title=Computer_Science/61b/Homework/hw5/Set.java&amp;diff=3255&amp;oldid=prev</id>
		<title>Lensovet at 07:05, 22 September 2007</title>
		<link rel="alternate" type="text/html" href="http://www.lensovet.net/~sysadmin/w/index.php?title=Computer_Science/61b/Homework/hw5/Set.java&amp;diff=3255&amp;oldid=prev"/>
		<updated>2007-09-22T07:05:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{code}}&lt;br /&gt;
 /* Set.java */&lt;br /&gt;
 &lt;br /&gt;
 import list.*;&lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
  *  A Set is a collection of Comparable elements stored in sorted order.&lt;br /&gt;
  *  Duplicate elements are not permitted in a Set.&lt;br /&gt;
  **/&lt;br /&gt;
 public class Set {&lt;br /&gt;
 	/* Fill in the data fields here. */&lt;br /&gt;
 	protected List set;&lt;br /&gt;
 	&lt;br /&gt;
 	/**&lt;br /&gt;
 	 * Set ADT invariants:&lt;br /&gt;
 	 *  1)  The Set's elements must be precisely the elements of the List.&lt;br /&gt;
 	 *  2)  The List must always contain Comparable elements, and those elements &lt;br /&gt;
 	 *      must always be sorted in ascending order.&lt;br /&gt;
 	 *  3)  No two elements in the List may be equals().&lt;br /&gt;
 	 **/&lt;br /&gt;
 	&lt;br /&gt;
 	/**&lt;br /&gt;
 	 *  Constructs an empty Set. &lt;br /&gt;
 	 *&lt;br /&gt;
 	 *  Performance:  runs in O(1) time.&lt;br /&gt;
 	 **/&lt;br /&gt;
 	public Set() { &lt;br /&gt;
 		set = new DList();&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	/**&lt;br /&gt;
 	 *  cardinality() returns the number of elements in this Set.&lt;br /&gt;
 	 *&lt;br /&gt;
 	 *  Performance:  runs in O(1) time.&lt;br /&gt;
 	 **/&lt;br /&gt;
 	public int cardinality() {&lt;br /&gt;
 		return set.length();&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	/**&lt;br /&gt;
 	 *  insert() inserts a Comparable element into this Set.&lt;br /&gt;
 	 *&lt;br /&gt;
 	 *  Sets are maintained in sorted order.  The ordering is specified by the&lt;br /&gt;
 	 *  compareTo() method of the java.lang.Comparable interface.&lt;br /&gt;
 	 *&lt;br /&gt;
 	 *  Performance:  runs in O(this.cardinality()) time.&lt;br /&gt;
 	 **/&lt;br /&gt;
 	public void insert(Comparable c) {&lt;br /&gt;
 		ListNode curnode = null;&lt;br /&gt;
 		try {&lt;br /&gt;
 			curnode = set.front();&lt;br /&gt;
 			while (((Comparable) curnode.item()).compareTo(c) &amp;lt; 0) {&lt;br /&gt;
 				curnode = curnode.next();&lt;br /&gt;
 			} if (((Comparable) curnode.item()).compareTo(c) == 0) {&lt;br /&gt;
 				// the items are the same: do nothing&lt;br /&gt;
 			} else {&lt;br /&gt;
 				curnode.insertBefore(c);&lt;br /&gt;
 			}&lt;br /&gt;
 		} catch (InvalidNodeException e) { // list is empty, or we reached the end of it w/out finding a number greater than the one we're inserting&lt;br /&gt;
 			set.insertBack(c);&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	&lt;br /&gt;
 	/**&lt;br /&gt;
 	 *  union() modifies this Set so that it contains all the elements it&lt;br /&gt;
 	 *  started with, plus all the elements of s.  The Set s is NOT modified.&lt;br /&gt;
 	 *  Make sure that duplicate elements are not created.&lt;br /&gt;
 	 *&lt;br /&gt;
 	 *  Performance:  Must run in O(this.cardinality() + s.cardinality()) time.&lt;br /&gt;
 	 *&lt;br /&gt;
 	 *  Your implementation should NOT copy elements of s or &amp;quot;this&amp;quot;, though it&lt;br /&gt;
 	 *  will copy _references_ to the elements of s.  Your implementation will&lt;br /&gt;
 	 *  create new _nodes_ for the elements of s that are added to &amp;quot;this&amp;quot;, but&lt;br /&gt;
 	 *  you should reuse the nodes that are already part of &amp;quot;this&amp;quot;.&lt;br /&gt;
 	 *&lt;br /&gt;
 	 *  DO NOT MODIFY THE SET s.&lt;br /&gt;
 	 *  DO NOT ATTEMPT TO COPY ELEMENTS; just copy ''references'' to them.&lt;br /&gt;
 	 **/&lt;br /&gt;
 	public void union(Set s) {&lt;br /&gt;
 		ListNode insertion = set.front();&lt;br /&gt;
 		ListNode retrieval = s.set.front();&lt;br /&gt;
 		try {&lt;br /&gt;
 			while (true) {&lt;br /&gt;
 				try {&lt;br /&gt;
 					while (((Comparable) insertion.item()).compareTo(((Comparable) retrieval.item())) &amp;lt; 0) {&lt;br /&gt;
 						insertion = insertion.next();&lt;br /&gt;
 					} if (((Comparable) insertion.item()).compareTo(((Comparable) retrieval.item())) &amp;gt; 0) {&lt;br /&gt;
 						insertion.insertBefore(retrieval.item());&lt;br /&gt;
 					}&lt;br /&gt;
 				} catch (InvalidNodeException x) {&lt;br /&gt;
 				// the item we want to insert is greater than all the items in this set, so go ahead and insert the rest of the elements of s.&lt;br /&gt;
 						try {&lt;br /&gt;
 							while (true) {&lt;br /&gt;
 								set.insertBack(retrieval.item());&lt;br /&gt;
 								retrieval = retrieval.next();&lt;br /&gt;
 							}&lt;br /&gt;
 						} catch (InvalidNodeException e) { // reached end of s, so we're done here&lt;br /&gt;
 						} // it would be cool if this try just cascaded down, but it doesn't&lt;br /&gt;
 					}&lt;br /&gt;
 					retrieval = retrieval.next(); // let's insert the next item&lt;br /&gt;
 			}&lt;br /&gt;
 		} catch (InvalidNodeException x) { // reached end of s, so we're done here&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	/**&lt;br /&gt;
 	 *  intersect() modifies this Set so that it contains the intersection of&lt;br /&gt;
 	 *  its own elements and the elements of s.  The Set s is NOT modified.&lt;br /&gt;
 	 *&lt;br /&gt;
 	 *  Performance:  Must run in O(this.cardinality() + s.cardinality()) time.&lt;br /&gt;
 	 *&lt;br /&gt;
 	 *  Do not construct any new ListNodes during the execution of intersect.&lt;br /&gt;
 	 *  Reuse the nodes of &amp;quot;this&amp;quot; that will be in the intersection.&lt;br /&gt;
 	 *&lt;br /&gt;
 	 *  DO NOT MODIFY THE SET s.&lt;br /&gt;
 	 *  DO NOT CONSTRUCT ANY NEW NODES.&lt;br /&gt;
 	 *  DO NOT ATTEMPT TO COPY ELEMENTS.&lt;br /&gt;
 	 **/&lt;br /&gt;
 	public void intersect(Set s) {&lt;br /&gt;
 		ListNode insertion = set.front();&lt;br /&gt;
 		ListNode retrieval = s.set.front();&lt;br /&gt;
 		try {&lt;br /&gt;
 			while (true) {&lt;br /&gt;
 				while (((Comparable) insertion.item()).compareTo(((Comparable) retrieval.item())) &amp;lt; 0) {&lt;br /&gt;
 					insertion = insertion.next();&lt;br /&gt;
 					insertion.prev().remove();&lt;br /&gt;
 				} if (((Comparable) insertion.item()).compareTo(((Comparable) retrieval.item())) &amp;gt; 0) {&lt;br /&gt;
 					retrieval = retrieval.next();&lt;br /&gt;
 				} else { // we have an intersection - now move both pointers one element forward&lt;br /&gt;
 					insertion = insertion.next();&lt;br /&gt;
 					retrieval = retrieval.next();&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 		} catch (InvalidNodeException x) { // we've reached the end of some set, so we're done&lt;br /&gt;
 		}&lt;br /&gt;
 		&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	/**&lt;br /&gt;
 	 *  toString() returns a String representation of this Set.  The String must&lt;br /&gt;
 	 *  have the following format:&lt;br /&gt;
 	 *    {  } for an empty Set.  No spaces before &amp;quot;{&amp;quot; or after &amp;quot;}&amp;quot;; two spaces&lt;br /&gt;
 	 *            between them.&lt;br /&gt;
 	 *    {  1  2  3  } for a Set of three Integer elements.  No spaces before&lt;br /&gt;
 	 *            &amp;quot;{&amp;quot; or after &amp;quot;}&amp;quot;; two spaces before and after each element.&lt;br /&gt;
 	 *            Elements are printed with their own toString method, whatever&lt;br /&gt;
 	 *            that may be.  The elements must appear in sorted order, from&lt;br /&gt;
 	 *            lowest to highest according to the compareTo() method.&lt;br /&gt;
 	 *&lt;br /&gt;
 	 *  WARNING:  THE AUTOGRADER EXPECTS YOU TO PRINT SETS IN ''EXACTLY'' THIS&lt;br /&gt;
 	 *            FORMAT, RIGHT UP TO THE TWO SPACES BETWEEN ELEMENTS.  ANY&lt;br /&gt;
 	 *            DEVIATIONS WILL LOSE POINTS.&lt;br /&gt;
 	 **/&lt;br /&gt;
 	public String toString() {&lt;br /&gt;
 		String string = &amp;quot;{&amp;quot;;&lt;br /&gt;
 		ListNode curnode = set.front();&lt;br /&gt;
 		try {&lt;br /&gt;
 			while (true) { // loop until we throw an exception&lt;br /&gt;
 				string = string + &amp;quot;  &amp;quot; + curnode.item();&lt;br /&gt;
 				curnode = curnode.next();&lt;br /&gt;
 			}&lt;br /&gt;
 		} catch (InvalidNodeException e) { // we hit the end of the set or it's empty&lt;br /&gt;
 			string = string + &amp;quot;  }&amp;quot;;&lt;br /&gt;
 		}&lt;br /&gt;
 		return string;&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	public static void main(String[] argv) {		&lt;br /&gt;
 		Set s = new Set();&lt;br /&gt;
 		s.insert(new Integer(3));&lt;br /&gt;
 		s.insert(new Integer(4));&lt;br /&gt;
 		s.insert(new Integer(3));&lt;br /&gt;
 		System.out.println(&amp;quot;Set s = &amp;quot; + s);&lt;br /&gt;
 		&lt;br /&gt;
 		Set s2 = new Set();&lt;br /&gt;
 		s2.insert(new Integer(4));&lt;br /&gt;
 		s2.insert(new Integer(5));&lt;br /&gt;
 		s2.insert(new Integer(5));&lt;br /&gt;
 		System.out.println(&amp;quot;Set s2 = &amp;quot; + s2);&lt;br /&gt;
 		&lt;br /&gt;
 		Set s3 = new Set();&lt;br /&gt;
 		s3.insert(new Integer(5));&lt;br /&gt;
 		s3.insert(new Integer(3));&lt;br /&gt;
 		s3.insert(new Integer(8));&lt;br /&gt;
 		System.out.println(&amp;quot;Set s3 = &amp;quot; + s3);&lt;br /&gt;
 		&lt;br /&gt;
 		s.union(s2);&lt;br /&gt;
 		System.out.println(&amp;quot;After s.union(s2), s = &amp;quot; + s);&lt;br /&gt;
 		&lt;br /&gt;
 		s.intersect(s3);&lt;br /&gt;
 		System.out.println(&amp;quot;After s.intersect(s3), s = &amp;quot; + s);&lt;br /&gt;
 		&lt;br /&gt;
 		System.out.println(&amp;quot;s.cardinality() = &amp;quot; + s.cardinality());&lt;br /&gt;
 		// You may want to add more (ungraded) test code here.&lt;br /&gt;
 		Set c = new Set();&lt;br /&gt;
 		System.out.println(c);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Lensovet</name></author>
		
	</entry>
</feed>