JAVA Take the code it is from the Savitch student data files
JAVA
Take the code (it is from the Savitch student data files) listed here and
1. make it doubly linked.
2. Add a copy constructor
3. Add a clone method
4. Replace outputList with toString
5. Code an iterator method
6. Keep track of the tail and add a method outputBackwards to prove the list is doubly linked.
Or use the Savitch code in the book for a doubly linked list and add the functionality mentioned above – I think you will learn less that way but it is less work.
To make the node doubly linked change
private Node<T> link;
to
private Node<T> next;
private Node<T> prev;
Test all functionality by hard coding test cases into your demo file.
----------------------------------------------------------------------------------------
public class LinkedList3<T>
{
private class Node<T>
{
private T data;
private Node<T> link;
public Node( )
{
data = null;
link = null;
}
public Node(T newData, Node<T> linkValue)
{
data = newData;
link = linkValue;
}
}//End of Node<T> inner class
private Node<T> head;
public LinkedList3( )
{
head = null;
}
/**
Adds a node at the start of the list with the specified data.
The added node will be the first node in the list.
*/
public void addToStart(T itemData)
{
head = new Node<T>(itemData, head);
}
/**
Removes the head node and returns true if the list contains at least
one node. Returns false if the list is empty.
*/
public boolean deleteHeadNode( )
{
if (head != null)
{
head = head.link;
return true;
}
else
return false;
}
/**
Returns the number of nodes in the list.
*/
public int size( )
{
int count = 0;
Node<T> position = head;
while (position != null)
{
count++;
position = position.link;
}
return count;
}
public boolean contains(T item)
{
return (find(item) != null);
}
/**
Finds the first node containing the target item, and returns a
reference to that node. If target is not in the list, null is returned.
*/
private Node<T> find(T target)
{
Node<T> position = head;
T itemAtPosition;
while (position != null)
{
itemAtPosition = position.data;
if (itemAtPosition.equals(target))
return position;
position = position.link;
}
return null; //target was not found
}
/**
Finds the first node containing the target and returns a reference
to the data in that node. If target is not in the list, null is returned.
*/
public T findData(T target)
{
return find(target).data;
}
public void outputList( )
{
Node<T> position = head;
while (position != null)
{
System.out.println(position.data);
position = position.link;
}
}
public boolean isEmpty( )
{
return (head == null);
}
public void clear( )
{
head = null;
}
/*
For two lists to be equal they must contain the same data items in
the same order. The equals method of T is used to compare data items.
*/
public boolean equals(Object otherObject)
{
if (otherObject == null)
return false;
else if (getClass( ) != otherObject.getClass( ))
return false;
else
{
LinkedList3<T> otherList = (LinkedList3<T>)otherObject;
if (size( ) != otherList.size( ))
return false;
Node<T> position = head;
Node<T> otherPosition = otherList.head;
while (position != null)
{
if (!(position.data.equals(otherPosition.data)))
return false;
position = position.link;
otherPosition = otherPosition.link;
}
return true; //no mismatch was not found
}
}
}
Solution
#include <stdio.h>
#include <stdlib.h>
struct node
*h,*temp,*temp1,*temp2,*temp4;
void insert1();
void insert2();
void insert3();
void traversebeg();
void traverseend(int);
void sort();
void search();
void update();
void delete();
int count = 0;
void main()
worker = temp1 = NULL;
printf(\"\ one - Insert at beginning\");
printf(\"\ a pair of - Insert at end\");
printf(\"\ three - Insert at position i\");
printf(\"\ four - Delete at i\");
printf(\"\ five - show from beginning\");
printf(\"\ vi - show from end\");
printf(\"\ seven - look for element\");
printf(\"\ eight - kind the list\");
printf(\"\ nine - Update associate degree element\");
printf(\"\ ten - Exit\");
while (1)
temporary worker =(struct node *)malloc(1*sizeof(struct node));
temp->prev = NULL;
temp->next = NULL;
printf(\"\ Enter worth to node : \");
scanf(\"%d\", &data);
temp->n = data;
count++;
}
/* TO insert at starting */
void insert1()
else
}
/* To insert at finish */
void insert2()
else
}
/* To insert at any position */
void insert3()
else
whereas (i < pos)
create();
temp->prev = temp2;
temp->next = temp2->next;
temp2->next->prev = temp;
temp2->next = temp;
}
}
/* To delete a component */
void delete()
parts to delete\");
return;
}
else
whereas (i < pos)
if (i == 1)
knowledge to be updated : \");
scanf(\"%d\", &data);
printf(\"\ Enter new knowledge : \");
scanf(\"%d\", &data1);
temp2 = h;
if (temp2 == NULL)
else
temp2 = temp2->next;
}
printf(\"\ Error : you wouldn\'t found in list to update\", data);
}
/* To kind the coupled list */
void sort()
}
}
traversebeg();
}






