chetah
02-23-2010, 09:20 AM
public class LinkedList<T>{
private Node head;
public LinkedList()
{
head = null;
}
public boolean isEmpty()
{
return (head==null);
}
public void addToHead(T val )
{
Node n = new Node(val);
n.next = head;
head = n;
}
public T getHeadData(){
if(head == null){
throw new RuntimeException("attempt to get data from an empty list !");
}
else{
return head.data;
}
}
public void deleteHead(){
if(head == null){
throw new RuntimeException("Deleting from an empty list !");
}else{
head= head.next;
}
}
public void addToTail(T val)//show no result
{
Node n = new Node (val);
if(head==null)
head = n;
else{
Node curr = head;
curr = curr.next;
curr.next = n;
addToTail(val);
}
}//end addtail
public void delete(T val){//does not return a result (shows no errors)
Node curr=null;
if(head !=null){
if(head.data==val)
head = head.next;
else{
curr = head;
curr = curr.next;
delete(curr.data);
}
}
}
public void insertSorted(T val){
Node y = new Node(val);
if(head==null || val < head.data)//operator < cannot be applied to T, T
head = y;
else
head = head.next;
insertSorted(head.data);
}
public boolean contains(T val)
{
if(head!=null){
if(head.data==val)
return true;
head = head.next;
return contains(val);
}
return false;
}//end of contains
public String toString(){
String str = " ";
Node curr = head;
while(curr !=null){
str = str + curr.data +" ";
curr = curr.next;
}
return str + "\n";
}
public class Node{
public T data;
public Node next;
public Node(T val){
data = val;
next = null;
}
}//End of node class
}//Linked List
class TestLinkedList{
public static void main(String[] args){
LinkedList<Integer>ST = new LinkedList<Integer>();
for(int i = 0; i < 10; i++){ //correctly load linkedlist
ST.addToHead(i);
}
System.out.println(ST.toString()); //print list
boolean y = ST.contains(12);
System.out.println(y);
ST.addToTail(200); //returns nothing
System.out.println(ST.toString());
ST.delete(5);
System.out.println(ST.toString());
insertSorted(11);
System.out.println(ST.toString());
}//end main
}//end class
Need help.
public void addToTail(T val)
public void delete(T val)
public void insertSorted(T val)
I need help to get the above functions to work recursively. I am able to get them work iteratively, no problem. When I try to write the functions re cursively, I am not able to see any results. I am at a lost understanding why.
private Node head;
public LinkedList()
{
head = null;
}
public boolean isEmpty()
{
return (head==null);
}
public void addToHead(T val )
{
Node n = new Node(val);
n.next = head;
head = n;
}
public T getHeadData(){
if(head == null){
throw new RuntimeException("attempt to get data from an empty list !");
}
else{
return head.data;
}
}
public void deleteHead(){
if(head == null){
throw new RuntimeException("Deleting from an empty list !");
}else{
head= head.next;
}
}
public void addToTail(T val)//show no result
{
Node n = new Node (val);
if(head==null)
head = n;
else{
Node curr = head;
curr = curr.next;
curr.next = n;
addToTail(val);
}
}//end addtail
public void delete(T val){//does not return a result (shows no errors)
Node curr=null;
if(head !=null){
if(head.data==val)
head = head.next;
else{
curr = head;
curr = curr.next;
delete(curr.data);
}
}
}
public void insertSorted(T val){
Node y = new Node(val);
if(head==null || val < head.data)//operator < cannot be applied to T, T
head = y;
else
head = head.next;
insertSorted(head.data);
}
public boolean contains(T val)
{
if(head!=null){
if(head.data==val)
return true;
head = head.next;
return contains(val);
}
return false;
}//end of contains
public String toString(){
String str = " ";
Node curr = head;
while(curr !=null){
str = str + curr.data +" ";
curr = curr.next;
}
return str + "\n";
}
public class Node{
public T data;
public Node next;
public Node(T val){
data = val;
next = null;
}
}//End of node class
}//Linked List
class TestLinkedList{
public static void main(String[] args){
LinkedList<Integer>ST = new LinkedList<Integer>();
for(int i = 0; i < 10; i++){ //correctly load linkedlist
ST.addToHead(i);
}
System.out.println(ST.toString()); //print list
boolean y = ST.contains(12);
System.out.println(y);
ST.addToTail(200); //returns nothing
System.out.println(ST.toString());
ST.delete(5);
System.out.println(ST.toString());
insertSorted(11);
System.out.println(ST.toString());
}//end main
}//end class
Need help.
public void addToTail(T val)
public void delete(T val)
public void insertSorted(T val)
I need help to get the above functions to work recursively. I am able to get them work iteratively, no problem. When I try to write the functions re cursively, I am not able to see any results. I am at a lost understanding why.