SlideShare a Scribd company logo
I need help implementing a Stack with this java programming assignment:
Given a doubly linked list (code provided below) implement a Stack. You must use the doubly
link list class and utilize it as an object in your implementation of the stack.
A Stack is a Last in First Out (LiFO) structure which translates to the processes of outputting the
last element which was inputted in the collection. The Stack is based on the process of putting
things on top of one another and taking the item on top (think of a stack of papers).
Operations to implement:
push (E): Add an element to the start of the sequence
pop: Remove an element from the start of the sequence
Peek: Return the first element of the sequence without removing it
atIndex(x): Return the element at the given index (x) Or throw an exception if it is out of bound
(if you can control the user input then do that instead)
Size: Return the size of the Stack
isEmpty: Boolean, returns true if the Stack is empty
Empty: Empty the Stack
Code Part 1:
public class DoublyLinkedList{
private DNode head;
private DNode tail;
private int size;
public DoublyLinkedList(){ // construct an empty list
this.tail = new DNode (null, null, this.head);
this.head = new DNode (null, this.tail, null);
this.size = 0;
}
public DoublyLinkedList(DNode next){ // constructs a list
// out of a single node
this.tail = new DNode (null, null, next);
this.head = new DNode (null, next, null);
next.changeNext(this.tail);
next.changePrev(this.head);
this.size = 1;
}
public DoublyLinkedList(Object [] objectArray){ // construct a list out of
// an array
this.tail = new DNode (null, null, this.head);
this.head = new DNode (null, this.tail, null);
DNode temp = this.head;
for (Object e : objectArray)
{
//Anonomus function
new DNode (e, temp.getNext(),temp).insertBetweenNodes(temp, temp.getNext());
temp = temp.getNext();
this.size += 1;
}
}
public void addToFrontofList(Object toAdd){ // Appends the begining
// of the list
DNode temp = new DNode (toAdd, this.head.getNext(), this.head);
this.head.getNext().changePrev(temp);
this.head.changeNext(temp);
this.size += 1;
}
public void addToendofList (Object toAdd) // appends the end of the list
// with a node
{
DNode temp = new DNode (toAdd, this.tail, this.tail.getPrev());
this.tail.getPrev().changeNext(temp);
this.tail.changePrev(temp);
this.size += 1;
}
public void insertAfterNode(DNode current, Object input)// Inserts a new
// a new node after
// current node
{
current.insertAfterNode(input);
this.size += 1;
}
public int getSize() // returns the size of the list
{
return this.size;
}
public String toString()
{
String result = "";
for (DNode temp = this.head.getNext();
temp.hasNext(); temp = temp.getNext())
{
result += temp.getValue();
result += " -> ";
}
result += "End of list";
return result;
}
}
and code part2:
public class DNode{
private Object e; // place holder for the type of object the
//collection is storing
private DNode next; // reference to the next node in the sequence
// of nodes making up the linked list. Remember
// that even though Java passes Objects by value
// an object consisting of reference will behave
// the same as an object passed by reference unless
// a deep copy was made.
private DNode prev;
public DNode(Object e){ // Constructor for implementing a single node
this.e = e; // The value of the element to be assigned to
// this particular instance of node
this.next = null; // An empty reference since there is no node
// to follow.
this.prev = null;
}
public DNode(Object e, DNode next, DNode prev){ // Constructor for
//implementing a node that
//comes after another node
this.e = e; // The value of the element to be assigned to
// this particular instance of node
this.next = next; // reference to the subsequent node to follow
this.prev = prev;
}
public void changeNext(DNode next){ // Changes the link to the next node
this.next = next;
}
public void changePrev(DNode prev){ // Changes the link to the next node
this.prev = prev;
}
public DNode getNext(){ // Returns the node next in the sequence
return this.next;
}
public Object getValue(){ // Returns the value a node is holding
return this.e;
}
public Boolean hasNext(){ // Returns a boolean determining regarding
// the status of subsequent nodes after
// the current node
return !(this.next.getValue() == null || this.next == null);
}
public Boolean hasprev(){ // Returns a boolean determining regarding
// the status of subsequent nodes after
// the current node
return !(this.prev.getValue() == null || this.prev == null);
}
public void insertAfterNode( Object input){
this.changeNext(new DNode (input, this.getNext(), this));
}
public void insertAfterNode(DNode input){
this.changeNext(input);
input.changeNext(this.next);
input.changePrev(this);
}
public void insertbeforeNode(DNode input){
this.changeNext(input);
}
public void insertBetweenNodes(DNode before, DNode after){
this.changeNext(after);
this.changePrev(before);
before.changeNext(this);
after.changePrev(this);
}
public DNode getPrev(){
return this.prev;
}
}
Solution
Following is the program that contain functions like push,pop,isEmpty etc. call this function with
proper data.
import java.util.NoSuchElementException;
public class DoublyLinkedListImpl {
private Node head;
private Node tail;
private int size;
public DoublyLinkedListImpl() {
size = 0;
}
// this class keeps track all element info
private class Node {
E element;
Node next;
Node prev;
public Node(E element, Node next, Node prev) {
this.element = element;
this.next = next;
this.prev = prev;
}
}
// returns the size of the linked list
public int size() { return size; }
// return whether the list is empty or not
public boolean isEmpty() { return size == 0; }
// adds element at the starting of the linked list
public void push(E element) {
Node tmp = new Node(element, head, null);
if(head != null ) {head.prev = tmp;}
head = tmp;
if(tail == null) { tail = tmp;}
size++;
System.out.println("adding: "+element);
}
// this method removes element from the start of the linked list
public E pop() {
if (size == 0) throw new NoSuchElementException();
Node tmp = head;
head = head.next;
head.prev = null;
size--;
System.out.println("deleted: "+tmp.element);
return tmp.element;
}
public E Peek() {
if (isEmpty()) throw new NoSuchElementException("Stack underflow");
return head.element;
}
public void remove()
{
head = null;
}
// Takes index as argument and return data at index
public E GetNth(int index)
{
Node current = head;
int count = 0;
while (current != null)
{
if (count == index)
return current.element;
count++;
current = current.next;
}
assert(false);
return current.element;
}
public static void main(String a[]){
// Testing data to test the functions
DoublyLinkedListImpl dll = new DoublyLinkedListImpl();
dll.remove();
dll.push(10);
dll.push(34);
dll.size();
dll.Peek();
dll.GetNth(2);
dll.pop();
}
}

More Related Content

PDF
Here is the editable codeSolutionimport java.util.NoSuchEleme.pdf
PDF
Given below is the completed implementation of MyLinkedList class. O.pdf
PDF
Help please!!(Include your modified DList.java source code file in.pdf
PDF
In the class we extensively discussed a generic singly linked list i.pdf
PDF
package com.java2novice.ds.linkedlist;import java.util.NoSuchEleme.pdf
PDF
This is problem is same problem which i submitted on 22017, I just.pdf
PDF
The LinkedList1 class implements a Linked list. class.pdf
PDF
A linked stack is implemented using a standard Node class as follows.pdf
Here is the editable codeSolutionimport java.util.NoSuchEleme.pdf
Given below is the completed implementation of MyLinkedList class. O.pdf
Help please!!(Include your modified DList.java source code file in.pdf
In the class we extensively discussed a generic singly linked list i.pdf
package com.java2novice.ds.linkedlist;import java.util.NoSuchEleme.pdf
This is problem is same problem which i submitted on 22017, I just.pdf
The LinkedList1 class implements a Linked list. class.pdf
A linked stack is implemented using a standard Node class as follows.pdf

Similar to I need help implementing a Stack with this java programming assignme.pdf (20)

PDF
PROBLEM STATEMENTIn this assignment, you will complete DoubleEnde.pdf
PDF
To complete the task, you need to fill in the missing code. I’ve inc.pdf
PDF
import java-util-Iterator- import java-util-NoSuchElementException- im.pdf
PDF
Sorted number list implementation with linked listsStep 1 Inspec.pdf
PDF
Hi, Please find my code.I have correted all of your classes.Plea.pdf
PDF
This assignment and the next (#5) involve design and development of a.pdf
PDF
JAVA A double-ended queue is a list that allows the addition and.pdf
DOCX
Java Foundations StackADT-java --- - Defines the interface to a stack.docx
PDF
How do I fix it in LinkedList.javaLabProgram.javaLinkedList.jav.pdf
PDF
Write a Java Class to Implement a Generic Linked ListYour list mus.pdf
PDF
import java.util.Iterator; import java.util.NoSuchElementException; .pdf
PDF
How do I fix it in LinkedList.javathis is what i didLabProgra.pdf
PDF
Hi,I have added the methods and main class as per your requirement.pdf
PDF
Main issues with the following code-Im not sure if its reading the fil.pdf
PDF
Design, implement, test(In Java ) a doubly linked list ADT, using DL.pdf
PDF
Using NetBeansImplement a queue named QueueLL using a Linked List .pdf
PDF
How do I fix it in javaLinkedList.java Defines a doubl.pdf
DOCX
The MyLinkedList class used in Listing 24.6 is a one-way directional .docx
PDF
Data Structures in C++I am really new to C++, so links are really .pdf
PDF
How do I fix it in LinkedList.javaLinkedList.java Define.pdf
PROBLEM STATEMENTIn this assignment, you will complete DoubleEnde.pdf
To complete the task, you need to fill in the missing code. I’ve inc.pdf
import java-util-Iterator- import java-util-NoSuchElementException- im.pdf
Sorted number list implementation with linked listsStep 1 Inspec.pdf
Hi, Please find my code.I have correted all of your classes.Plea.pdf
This assignment and the next (#5) involve design and development of a.pdf
JAVA A double-ended queue is a list that allows the addition and.pdf
Java Foundations StackADT-java --- - Defines the interface to a stack.docx
How do I fix it in LinkedList.javaLabProgram.javaLinkedList.jav.pdf
Write a Java Class to Implement a Generic Linked ListYour list mus.pdf
import java.util.Iterator; import java.util.NoSuchElementException; .pdf
How do I fix it in LinkedList.javathis is what i didLabProgra.pdf
Hi,I have added the methods and main class as per your requirement.pdf
Main issues with the following code-Im not sure if its reading the fil.pdf
Design, implement, test(In Java ) a doubly linked list ADT, using DL.pdf
Using NetBeansImplement a queue named QueueLL using a Linked List .pdf
How do I fix it in javaLinkedList.java Defines a doubl.pdf
The MyLinkedList class used in Listing 24.6 is a one-way directional .docx
Data Structures in C++I am really new to C++, so links are really .pdf
How do I fix it in LinkedList.javaLinkedList.java Define.pdf
Ad

More from sauravmanwanicp (20)

PDF
Are hydrophobic interactions weak or strongSolutionHydrophobi.pdf
PDF
What is another word for account based forecast What is anothe.pdf
PDF
What function can be used to return multiple numeric data such as in.pdf
PDF
Answer the following questions in reference to Drosophila melanogast.pdf
PDF
There are five feasible solutions to a three-objective optimization p.pdf
PDF
An air-filled parallel-plate capacitor has capacitance Co. If two ide.pdf
PDF
The incandescent lightbulb was actually invented by Humphry Davy in 1.pdf
PDF
The fossil record provides little information about ancient mosses. D.pdf
PDF
The DNA sequence below is a shortened version of the sequence on the .pdf
PDF
the conducting tissue found in vascular plants that functions in tra.pdf
PDF
Show that f(x)=57^x+1 and f^-1(x)=7x-75 are inverses Choose the ap.pdf
PDF
Read the short article Horizontal Gene Transfer in E Coli and answer.pdf
PDF
Please select the best answer and click submit. The owners of fou.pdf
PDF
One function of the spliceosome is to (Select all that apply.)A. .pdf
PDF
Match the following organelles with their key functions in the cell .pdf
PDF
please choose the correct answerIn the ABO blood-type phenotype, w.pdf
PDF
mo Press Submit until all questions are colored green and you have do.pdf
PDF
matching chose the stage of the light reactions which the statement.pdf
PDF
Let E be the set of all even integers, and let O be the set of all o.pdf
PDF
JavaIm not sure how to implement this code can someone help me .pdf
Are hydrophobic interactions weak or strongSolutionHydrophobi.pdf
What is another word for account based forecast What is anothe.pdf
What function can be used to return multiple numeric data such as in.pdf
Answer the following questions in reference to Drosophila melanogast.pdf
There are five feasible solutions to a three-objective optimization p.pdf
An air-filled parallel-plate capacitor has capacitance Co. If two ide.pdf
The incandescent lightbulb was actually invented by Humphry Davy in 1.pdf
The fossil record provides little information about ancient mosses. D.pdf
The DNA sequence below is a shortened version of the sequence on the .pdf
the conducting tissue found in vascular plants that functions in tra.pdf
Show that f(x)=57^x+1 and f^-1(x)=7x-75 are inverses Choose the ap.pdf
Read the short article Horizontal Gene Transfer in E Coli and answer.pdf
Please select the best answer and click submit. The owners of fou.pdf
One function of the spliceosome is to (Select all that apply.)A. .pdf
Match the following organelles with their key functions in the cell .pdf
please choose the correct answerIn the ABO blood-type phenotype, w.pdf
mo Press Submit until all questions are colored green and you have do.pdf
matching chose the stage of the light reactions which the statement.pdf
Let E be the set of all even integers, and let O be the set of all o.pdf
JavaIm not sure how to implement this code can someone help me .pdf
Ad

Recently uploaded (20)

PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
PPTX
Presentation on HIE in infants and its manifestations
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PDF
RMMM.pdf make it easy to upload and study
PDF
O5-L3 Freight Transport Ops (International) V1.pdf
PDF
A systematic review of self-coping strategies used by university students to ...
PDF
102 student loan defaulters named and shamed – Is someone you know on the list?
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
PDF
2.FourierTransform-ShortQuestionswithAnswers.pdf
PDF
Computing-Curriculum for Schools in Ghana
PPTX
Cell Types and Its function , kingdom of life
PPTX
Pharmacology of Heart Failure /Pharmacotherapy of CHF
PPTX
master seminar digital applications in india
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PDF
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
PDF
O7-L3 Supply Chain Operations - ICLT Program
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PDF
VCE English Exam - Section C Student Revision Booklet
PDF
Chinmaya Tiranga quiz Grand Finale.pdf
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
Presentation on HIE in infants and its manifestations
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
RMMM.pdf make it easy to upload and study
O5-L3 Freight Transport Ops (International) V1.pdf
A systematic review of self-coping strategies used by university students to ...
102 student loan defaulters named and shamed – Is someone you know on the list?
STATICS OF THE RIGID BODIES Hibbelers.pdf
2.FourierTransform-ShortQuestionswithAnswers.pdf
Computing-Curriculum for Schools in Ghana
Cell Types and Its function , kingdom of life
Pharmacology of Heart Failure /Pharmacotherapy of CHF
master seminar digital applications in india
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
human mycosis Human fungal infections are called human mycosis..pptx
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
O7-L3 Supply Chain Operations - ICLT Program
Final Presentation General Medicine 03-08-2024.pptx
VCE English Exam - Section C Student Revision Booklet
Chinmaya Tiranga quiz Grand Finale.pdf

I need help implementing a Stack with this java programming assignme.pdf

  • 1. I need help implementing a Stack with this java programming assignment: Given a doubly linked list (code provided below) implement a Stack. You must use the doubly link list class and utilize it as an object in your implementation of the stack. A Stack is a Last in First Out (LiFO) structure which translates to the processes of outputting the last element which was inputted in the collection. The Stack is based on the process of putting things on top of one another and taking the item on top (think of a stack of papers). Operations to implement: push (E): Add an element to the start of the sequence pop: Remove an element from the start of the sequence Peek: Return the first element of the sequence without removing it atIndex(x): Return the element at the given index (x) Or throw an exception if it is out of bound (if you can control the user input then do that instead) Size: Return the size of the Stack isEmpty: Boolean, returns true if the Stack is empty Empty: Empty the Stack Code Part 1: public class DoublyLinkedList{ private DNode head; private DNode tail; private int size; public DoublyLinkedList(){ // construct an empty list this.tail = new DNode (null, null, this.head); this.head = new DNode (null, this.tail, null); this.size = 0; } public DoublyLinkedList(DNode next){ // constructs a list // out of a single node this.tail = new DNode (null, null, next); this.head = new DNode (null, next, null); next.changeNext(this.tail); next.changePrev(this.head); this.size = 1; } public DoublyLinkedList(Object [] objectArray){ // construct a list out of
  • 2. // an array this.tail = new DNode (null, null, this.head); this.head = new DNode (null, this.tail, null); DNode temp = this.head; for (Object e : objectArray) { //Anonomus function new DNode (e, temp.getNext(),temp).insertBetweenNodes(temp, temp.getNext()); temp = temp.getNext(); this.size += 1; } } public void addToFrontofList(Object toAdd){ // Appends the begining // of the list DNode temp = new DNode (toAdd, this.head.getNext(), this.head); this.head.getNext().changePrev(temp); this.head.changeNext(temp); this.size += 1; } public void addToendofList (Object toAdd) // appends the end of the list // with a node { DNode temp = new DNode (toAdd, this.tail, this.tail.getPrev()); this.tail.getPrev().changeNext(temp); this.tail.changePrev(temp); this.size += 1; } public void insertAfterNode(DNode current, Object input)// Inserts a new // a new node after // current node { current.insertAfterNode(input); this.size += 1; } public int getSize() // returns the size of the list
  • 3. { return this.size; } public String toString() { String result = ""; for (DNode temp = this.head.getNext(); temp.hasNext(); temp = temp.getNext()) { result += temp.getValue(); result += " -> "; } result += "End of list"; return result; } } and code part2: public class DNode{ private Object e; // place holder for the type of object the //collection is storing private DNode next; // reference to the next node in the sequence // of nodes making up the linked list. Remember // that even though Java passes Objects by value // an object consisting of reference will behave // the same as an object passed by reference unless // a deep copy was made. private DNode prev; public DNode(Object e){ // Constructor for implementing a single node this.e = e; // The value of the element to be assigned to // this particular instance of node this.next = null; // An empty reference since there is no node // to follow. this.prev = null; }
  • 4. public DNode(Object e, DNode next, DNode prev){ // Constructor for //implementing a node that //comes after another node this.e = e; // The value of the element to be assigned to // this particular instance of node this.next = next; // reference to the subsequent node to follow this.prev = prev; } public void changeNext(DNode next){ // Changes the link to the next node this.next = next; } public void changePrev(DNode prev){ // Changes the link to the next node this.prev = prev; } public DNode getNext(){ // Returns the node next in the sequence return this.next; } public Object getValue(){ // Returns the value a node is holding return this.e; } public Boolean hasNext(){ // Returns a boolean determining regarding // the status of subsequent nodes after // the current node return !(this.next.getValue() == null || this.next == null); } public Boolean hasprev(){ // Returns a boolean determining regarding // the status of subsequent nodes after // the current node return !(this.prev.getValue() == null || this.prev == null); } public void insertAfterNode( Object input){ this.changeNext(new DNode (input, this.getNext(), this)); } public void insertAfterNode(DNode input){ this.changeNext(input);
  • 5. input.changeNext(this.next); input.changePrev(this); } public void insertbeforeNode(DNode input){ this.changeNext(input); } public void insertBetweenNodes(DNode before, DNode after){ this.changeNext(after); this.changePrev(before); before.changeNext(this); after.changePrev(this); } public DNode getPrev(){ return this.prev; } } Solution Following is the program that contain functions like push,pop,isEmpty etc. call this function with proper data. import java.util.NoSuchElementException; public class DoublyLinkedListImpl { private Node head; private Node tail; private int size; public DoublyLinkedListImpl() { size = 0; } // this class keeps track all element info private class Node { E element; Node next;
  • 6. Node prev; public Node(E element, Node next, Node prev) { this.element = element; this.next = next; this.prev = prev; } } // returns the size of the linked list public int size() { return size; } // return whether the list is empty or not public boolean isEmpty() { return size == 0; } // adds element at the starting of the linked list public void push(E element) { Node tmp = new Node(element, head, null); if(head != null ) {head.prev = tmp;} head = tmp; if(tail == null) { tail = tmp;} size++; System.out.println("adding: "+element); } // this method removes element from the start of the linked list public E pop() { if (size == 0) throw new NoSuchElementException(); Node tmp = head; head = head.next; head.prev = null; size--; System.out.println("deleted: "+tmp.element); return tmp.element; } public E Peek() {
  • 7. if (isEmpty()) throw new NoSuchElementException("Stack underflow"); return head.element; } public void remove() { head = null; } // Takes index as argument and return data at index public E GetNth(int index) { Node current = head; int count = 0; while (current != null) { if (count == index) return current.element; count++; current = current.next; } assert(false); return current.element; } public static void main(String a[]){ // Testing data to test the functions DoublyLinkedListImpl dll = new DoublyLinkedListImpl(); dll.remove(); dll.push(10); dll.push(34); dll.size(); dll.Peek(); dll.GetNth(2); dll.pop(); } }