linkylist class
unknown
java
4 years ago
7.5 kB
14
Indexable
package com.company;
import javax.swing.*;
import java.util.ArrayList;
// create the functions for a linked list
public class linkyList {
node front; // from the node class
wordNode dfront; // from the wordNode class
linkyList(){}
public void inIt() // set the front equal to null
{
front = null;
dfront = null;
}
node makeANode(int num) // make a single node from the node class
{
node node = new node(num);
node.data = num;
node.next = null;
if (front == null)
{
front = node; // create the front is empty
}
else // node is not empty
{
node n = front; // set n equal to front
while (n.next != null) // while the list is still populated add node
{
n = n.next;
}
n.next = node;
}
return node;
}
wordNode makeAWordNode (String word) // this creates a node from the word Node class
{
wordNode node = new wordNode();
node.wordCode = wordCode(word); // generate the word code
node.word = word;
node.count = 1;
node.next = null;
return node;
}
void nodeDef(node spot, String def)
{
// this methods add a definition to a node
// find the node you want to add the definition to and attach it to the node
}
node findTail () // find the last node
{
node current = front;
while (current.next != null)
{
current = current.next;
}
return current;
}
// commented out word stuff
/*
void buildAList(String word) // b
{
int j;
node tail;
for(j = 0; j < word.length(); j++ )
{
if (front == null)
{
inIt();
front = makeANode(word); // create a front
}
else
{
tail = findTail();
tail.next = makeANode(word);
}
}
} // end build a list
*/
void showMe() // show the list
{
node current = front;
while (current.next != null )
{
System.out.print(current.data + " "); // print out the word
current = current.next;
}
}
void showWordList ()
{
int j = 0;
wordNode curr;
curr = dfront;
while (curr != null)
{
System.out.print(curr.word + " ");
curr = curr.next;
j++;
}
}
void addAfter (wordNode spot, String word) // add after a specific node
{
wordNode nN = new wordNode();
nN.next = spot.next;
spot.next= nN;
}
wordNode findSpot (String word) // find a string within the linked list
{
int n = wordCode(word);
wordNode current, previous;
current = dfront; // set the front up
previous = current;
while ((current != null && current.wordCode <= n)) // as long as ll isn't empty keep going && the current word code is less than num
{
previous = current;
current = current.next;
}
return previous; // return the prev node
}
void deleteNode (String word)
{
// node head
int num = wordCode(word);
// if the node is at the end set it to null
wordNode curr;
curr = dfront;
while (curr.next != null) // go through the list
{
if (curr.wordCode == num ) {
curr.wordCode = curr.next.wordCode;
curr.next = curr.next.next;
}
curr = curr.next;
}
}
void returnCharacter (String a)
{
//have a character to compare to
int i = 0;
wordNode curr = dfront;
while (curr.next != null)
{
if (( curr.word.startsWith(a) )) // a has to be between these values and equal to the first character of the node
{
System.out.print(curr.word + " ");
}
curr = curr.next; // go through the list
}
}
wordNode searchList (wordNode node, String words)
{
int num = wordCode(words); // get the word code to comapare
wordNode curr;
curr = dfront;
boolean search = true;
while (search)
{
if (curr.wordCode == num)
{
System.out.print("Found your word: " + curr.word);
curr = curr.next;
search = false;
}
}
return curr;
}
void insertWordNode (String words) {
wordNode prev = null, curr = null, t;
boolean searching;
int num;
num = wordCode(words);
if (dfront == null) {
dfront = makeAWordNode(words); // make a new front if empty
} else if (num < dfront.wordCode) {
t = makeAWordNode(words);
t.next = dfront;
dfront = t;
} else {
searching = true;
curr = dfront;
prev = curr;
while (searching) // while search is true
{
if (curr.wordCode == num)
{
//System.out.print("Found a duplicate!");
searching = false; // turn searching off
}
else if (curr.wordCode < num) {
if (curr.next == null) {
// add to the back of the list
curr.next = makeAWordNode(words);
searching = false;
} else {
// move to next node
prev = curr;
curr = curr.next;
}
} else if (curr.wordCode > num) {
// insert node into list after prev
t = makeAWordNode(words);
t.next = curr;
prev.next = t;
searching = false;
}
}
}
} // end the insert word node class
int wordCode (String words)
{
int wordCode = 0;
int x, y, z; // for the first three letters
int size = words.length();
int[] array = new int [size];
String firstTheeChar = " ";
if (words.length() > 3) {
for (int i = 0; i < words.length(); i++) {
char c = words.charAt(i); // go through the string
if (c >= 'a' && c <= 'z') // if c is lower case
{
char c1 = words.charAt(0);
char c2 = words.charAt(1);
char c3 = words.charAt(2);
//wordCode = (first letter – ‘a’) * 262 + (second letter – ‘a’) * 261 + (third letter – ‘a’)*260
x = (c1 - 'a') * (int) Math.pow(26, 2);
y = (c2 - 'a') * (int) Math.pow(26, 1);
z = (c3 - 'a') * (int) Math.pow(26, 0);
wordCode = x + y + z; // holds the word code for each string
}
}
}
return wordCode;
} // end word count method
} // end class linky
Editor is loading...