239 lines
14 KiB
HTML
239 lines
14 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
|
<html>
|
|
<head>
|
|
<title>CircularList.java</title>
|
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
|
<style type="text/css">
|
|
<!--
|
|
body {color: #a9b7c6; background-color: #2b2b2b; font-family: monospace}
|
|
pre {color: #a9b7c6; background-color: #2b2b2b; font-family: monospace}
|
|
table {color: #888888; background-color: #313335; font-family: monospace}
|
|
.ST1 {color: #9876aa}
|
|
.ST2 {color: #ffc66d}
|
|
.number {color: #6897bb}
|
|
.string {color: #6a8759}
|
|
.whitespace {color: #505050}
|
|
.comment {color: #808080}
|
|
.ST4 {color: #9876aa; font-family: monospace; font-style: italic}
|
|
.ST5 {color: #ffc66d; font-family: monospace; font-style: italic}
|
|
.ST0 {color: #808080; font-family: monospace; font-weight: bold}
|
|
.ST3 {color: #8a653b}
|
|
.literal {color: #cc7832}
|
|
-->
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<table width="100%"><tr><td align="center">/home/caleb/ASDV-Java/Semester 3/Assignments/MP6_CalebFontenot/src/main/java/edu/slcc/asdv/caleb/mp6_calebfontenot/CircularList.java</td></tr></table>
|
|
<pre>
|
|
<span class="literal">package</span> edu.slcc.asdv.caleb.mp6_calebfontenot;
|
|
|
|
<span class="comment">/**</span>
|
|
<span class="comment"> *</span>
|
|
<span class="comment"> * </span><span class="ST0">@author</span> <span class="comment">Markou</span>
|
|
<span class="comment">*/</span>
|
|
<span class="literal">public</span> <span class="literal">class</span> CircularList<T <span class="literal">extends</span> Comparable<T>> {
|
|
|
|
Node<T> <span class="ST1">head</span>;
|
|
|
|
<span class="literal">public</span> <span class="literal">class</span> Node< T <span class="literal">extends</span> Comparable<T>>
|
|
<span class="literal">implements</span> Comparable<Node<T>> {
|
|
|
|
<span class="literal">private</span> T <span class="ST1">t</span>;
|
|
|
|
<span class="literal">public</span> <span class="literal">void</span> <span class="ST2">set</span>(T t)
|
|
{
|
|
<span class="literal">this</span>.<span class="ST1">t</span> = t;
|
|
}
|
|
|
|
<span class="literal">public</span> T <span class="ST2">get</span>()
|
|
{
|
|
<span class="literal">return</span> <span class="ST1">t</span>;
|
|
}
|
|
Node<T> <span class="ST1">next</span>;
|
|
|
|
@Override
|
|
<span class="literal">public</span> <span class="literal">int</span> <span class="ST2">compareTo</span>(Node<T> o)
|
|
{
|
|
<span class="literal">return</span> <span class="literal">this</span>.<span class="ST1">t</span>.compareTo(o.get());
|
|
}
|
|
}
|
|
|
|
<span class="comment">/**</span>
|
|
<span class="comment"> *</span>
|
|
<span class="comment"> * </span><span class="ST0">@param</span> <span class="ST3">t</span>
|
|
<span class="comment">*/</span>
|
|
<span class="literal">public</span> <span class="literal">void</span> <span class="ST2">add</span>(Object t)
|
|
{
|
|
Node<T> temp = <span class="literal">new</span> Node();
|
|
temp.set((T) t);
|
|
|
|
<span class="literal">if</span> (<span class="ST1">head</span> == <span class="literal">null</span>) {
|
|
<span class="ST1">head</span> = temp;
|
|
<span class="ST1">head</span>.<span class="ST1">next</span> = <span class="ST1">head</span>;
|
|
} <span class="literal">else</span> {
|
|
Node<T> temp2 = <span class="ST1">head</span>;
|
|
<span class="literal">do</span> {
|
|
temp2 = temp2.<span class="ST1">next</span>;
|
|
} <span class="literal">while</span> (temp2.<span class="ST1">next</span> != <span class="ST1">head</span>);
|
|
temp.<span class="ST1">next</span> = <span class="ST1">head</span>;
|
|
temp2.<span class="ST1">next</span> = temp;
|
|
}
|
|
}
|
|
|
|
<span class="comment">/**</span>
|
|
<span class="comment"> *</span>
|
|
<span class="comment"> * </span><span class="ST0">@return</span>
|
|
<span class="comment">*/</span>
|
|
<span class="literal">private</span> <span class="literal">int</span> <span class="ST2">getSize</span>()
|
|
{
|
|
<span class="literal">if</span> (<span class="ST1">head</span> == <span class="literal">null</span>) {
|
|
<span class="literal">return</span> <span class="number">0</span>;
|
|
}
|
|
Node<T> temp = <span class="ST1">head</span>;
|
|
<span class="literal">int</span> count = <span class="number">0</span>;
|
|
<span class="literal">do</span> {
|
|
temp = temp.<span class="ST1">next</span>;
|
|
count++;
|
|
} <span class="literal">while</span> (temp != <span class="ST1">head</span>);
|
|
|
|
<span class="literal">return</span> count;
|
|
}
|
|
<span class="comment">////////////////////////////////////////////////////////</span>
|
|
|
|
<span class="literal">public</span> <span class="literal">void</span> <span class="ST2">addAt</span>(Object t, <span class="literal">int</span> pos)
|
|
{
|
|
<span class="literal">if</span> (pos < <span class="number">0</span> || pos > getSize()) {
|
|
<span class="literal">return</span>;
|
|
}
|
|
|
|
Node<T> temp = <span class="literal">new</span> Node();
|
|
temp.set((T) t);
|
|
|
|
<span class="literal">if</span> (<span class="ST1">head</span> == <span class="literal">null</span>) {
|
|
add(t);
|
|
} <span class="literal">else</span> <span class="literal">if</span> (pos == <span class="number">0</span>) {
|
|
<span class="literal">int</span> oldSize = getSize();
|
|
Node<T> <span class="comment">currentHead</span> = <span class="ST1">head</span>;
|
|
temp.<span class="ST1">next</span> = <span class="ST1">head</span>;
|
|
<span class="ST1">head</span> = temp;
|
|
<span class="comment">// Set the node at the end of the list to point back to the new head.</span>
|
|
Node<T> pointer = <span class="ST1">head</span>;
|
|
<span class="literal">for</span> (<span class="literal">int</span> i = <span class="number">0</span>; i < oldSize; ++i) {
|
|
pointer = pointer.<span class="ST1">next</span>;
|
|
}
|
|
pointer.<span class="ST1">next</span> = temp;
|
|
} <span class="literal">else</span> {
|
|
<span class="comment">// Iterate to the desired position</span>
|
|
Node<T> pointer = <span class="ST1">head</span>;
|
|
<span class="literal">for</span> (<span class="literal">int</span> i = <span class="number">0</span>; i < pos -<span class="number">1</span>; ++i) {
|
|
pointer = pointer.<span class="ST1">next</span>;
|
|
}
|
|
temp.<span class="ST1">next</span> = pointer.<span class="ST1">next</span>;
|
|
pointer.<span class="ST1">next</span> = temp;
|
|
}
|
|
}
|
|
<span class="comment">//////////////////////////////////////////////////////////////</span>
|
|
<span class="comment">/**</span>
|
|
<span class="comment"> * </span><span class="comment">removes</span> <span class="comment">the</span> <span class="comment">last</span> <span class="comment">node</span>
|
|
<span class="comment">*/</span>
|
|
<span class="literal">public</span> <span class="literal">void</span> <span class="ST2">remove</span>()
|
|
{
|
|
Node<T> pointer = <span class="ST1">head</span>;
|
|
<span class="literal">for</span> (<span class="literal">int</span> i = <span class="number">0</span>; i < <span class="literal">this</span>.getSize() - <span class="number">2</span>; ++i) {
|
|
pointer = pointer.<span class="ST1">next</span>;
|
|
}
|
|
pointer.<span class="ST1">next</span> = <span class="ST1">head</span>;
|
|
}
|
|
<span class="comment">//////////////////////////////////////////////////////////////</span>
|
|
<span class="comment">/**</span>
|
|
<span class="comment"> * </span><span class="comment">removes</span> <span class="comment">a</span> <span class="comment">specific</span> <span class="comment">object</span> <span class="comment">from</span> <span class="comment">the</span> <span class="comment">list</span>
|
|
<span class="comment">*/</span>
|
|
<span class="literal">public</span> <span class="literal">boolean</span> <span class="ST2">remove</span>(Object t)
|
|
{
|
|
Node<T> pointer = <span class="ST1">head</span>;
|
|
<span class="literal">boolean</span> isObjectRemoved = <span class="literal">false</span>;
|
|
<span class="literal">do</span> {
|
|
<span class="literal">boolean</span> eval = pointer.<span class="ST1">next</span>.<span class="ST1">t</span>.equals(t);
|
|
<span class="literal">if</span> (eval) {
|
|
isObjectRemoved = <span class="literal">true</span>;
|
|
pointer.<span class="ST1">next</span> = pointer.<span class="ST1">next</span>.<span class="ST1">next</span>;
|
|
<span class="literal">break</span>;
|
|
} <span class="literal">else</span> {
|
|
pointer = pointer.<span class="ST1">next</span>;
|
|
}
|
|
} <span class="literal">while</span> (pointer != <span class="ST1">head</span>);
|
|
<span class="literal">return</span> isObjectRemoved;
|
|
}
|
|
<span class="comment">//////////////////////////////////////////////////////////////</span>
|
|
|
|
<span class="literal">public</span> <span class="literal">void</span> <span class="ST2">removeAt</span>(<span class="literal">int</span> pos)
|
|
{
|
|
Node<T> pointer = <span class="ST1">head</span>;
|
|
<span class="literal">for</span> (<span class="literal">int</span> i = <span class="number">0</span>; i < pos; ++i) {
|
|
<span class="literal">boolean</span> eval = i == pos - <span class="number">1</span>;
|
|
<span class="literal">if</span> (eval) {
|
|
pointer.<span class="ST1">next</span> = pointer.<span class="ST1">next</span>.<span class="ST1">next</span>;
|
|
<span class="literal">break</span>;
|
|
} <span class="literal">else</span> {
|
|
pointer = pointer.<span class="ST1">next</span>;
|
|
}
|
|
}
|
|
}
|
|
|
|
<span class="literal">public</span> <span class="literal">void</span> <span class="ST2">print</span>()
|
|
{
|
|
|
|
<span class="literal">if</span> (<span class="ST1">head</span> == <span class="literal">null</span>) {
|
|
<span class="literal">return</span>;
|
|
}
|
|
Node<T> temp = <span class="ST1">head</span>;
|
|
<span class="literal">int</span> elementNum = <span class="number">0</span>;
|
|
<span class="literal">do</span> {
|
|
System.<span class="ST4">out</span>.print(++elementNum + <span class="string">"</span><span class="string">: </span><span class="string">"</span>);
|
|
System.<span class="ST4">out</span>.println(temp.get().toString());
|
|
temp = temp.<span class="ST1">next</span>;
|
|
} <span class="literal">while</span> (temp != <span class="ST1">head</span>);
|
|
|
|
}
|
|
|
|
<span class="literal">public</span> <span class="literal">static</span> <span class="literal">void</span> <span class="ST5">main</span>(String... ar)
|
|
{
|
|
CircularList<String> list = <span class="literal">new</span> CircularList();
|
|
list.add(<span class="string">"</span><span class="string">Hello</span><span class="string">"</span>);
|
|
list.add(<span class="string">"</span><span class="string">World</span><span class="string">"</span>);
|
|
list.add(<span class="string">"</span><span class="string">one</span><span class="string">"</span>);
|
|
String removeMe = <span class="string">"</span><span class="string">two</span><span class="string">"</span>;
|
|
list.add(removeMe);
|
|
list.add(<span class="string">"</span><span class="string">three</span><span class="string">"</span>);
|
|
list.add(<span class="string">"</span><span class="string">four</span><span class="string">"</span>);
|
|
list.add(<span class="string">"</span><span class="string">five</span><span class="string">"</span>);
|
|
list.add(<span class="string">"</span><span class="string">six</span><span class="string">"</span>);
|
|
list.add(<span class="string">"</span><span class="string">seven</span><span class="string">"</span>);
|
|
list.print();
|
|
System.<span class="ST4">out</span>.println(<span class="string">"</span><span class="string">-------------</span><span class="string">"</span>);
|
|
System.<span class="ST4">out</span>.println(<span class="string">"</span><span class="string">Remove the last object:</span><span class="string">"</span>);
|
|
list.remove();
|
|
list.print();
|
|
System.<span class="ST4">out</span>.println(<span class="string">"</span><span class="string">-------------</span><span class="string">"</span>);
|
|
System.<span class="ST4">out</span>.println(<span class="string">"</span><span class="string">Remove </span><span class="literal">\"</span><span class="string">two</span><span class="literal">\"</span><span class="string">"</span>);
|
|
list.remove(removeMe);
|
|
list.print();
|
|
System.<span class="ST4">out</span>.println(<span class="string">"</span><span class="string">-------------</span><span class="string">"</span>);
|
|
System.<span class="ST4">out</span>.println(<span class="string">"</span><span class="string">Remove the 3rd element:</span><span class="string">"</span>);
|
|
list.removeAt(<span class="number">2</span>);
|
|
list.print();
|
|
System.<span class="ST4">out</span>.println(<span class="string">"</span><span class="string">-------------</span><span class="string">"</span>);
|
|
System.<span class="ST4">out</span>.println(<span class="string">"</span><span class="string">Add an element to the beginning</span><span class="string">"</span>);
|
|
list.addAt(<span class="string">"</span><span class="string">Earth</span><span class="string">"</span>, <span class="number">0</span>);
|
|
list.print();
|
|
System.<span class="ST4">out</span>.println(<span class="string">"</span><span class="string">-------------</span><span class="string">"</span>);
|
|
System.<span class="ST4">out</span>.println(<span class="string">"</span><span class="string">Add an element named </span><span class="literal">\"</span><span class="string">potato</span><span class="literal">\"</span><span class="string"> in the 4th position:</span><span class="string">"</span>);
|
|
list.addAt(<span class="string">"</span><span class="string">potato</span><span class="string">"</span>, <span class="number">3</span>);
|
|
list.print();
|
|
}
|
|
|
|
}
|
|
|
|
</pre></body>
|
|
</html>
|