JAVA Take the code (it is from the Savitch student data files) listed here and 1
ID: 3777061 • Letter: J
Question
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
}
}
}
Explanation / Answer
#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();
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.