Hi! Can someone can convert this java code to c++. ASAP thanks I will thumbs up
Here's the code:
package lists;
import bookdata.*;
public class DoublyLinkedList {
int size; //Variable que define el tamano de la lista.
Node head, tail; //Nodos que definen el Head y Tail en la lista.
//Constructor
public DoublyLinkedList(){
this.head = null;
this.tail = null;
this.size = 0;
}
//Insert a new book in alphabetic order.
public void insert(Book nb){
//Creamos uno nuevo nodo con el libro que queremos ingresar.
Node newNode = new Node(nb);
//Insertar si la lista esta vacia.
if(size == 0){
head = newNode;
tail = head;
size++;
return;
}
//Revisar si el libro ya existe en la lista
else{
Node current = head;
for(int i = 0; i < size; i++){
if(nb.getTitle().compareTo(current.stdBook.getTitle()) == 0){
System.out.println("Already exist a book with that name.");
return;
}
current = current.next;
}
}
//Revisar si seria el nuevo head.
if (nb.getTitle().compareTo(head.stdBook.getTitle()) < 0){
newNode.next = head;
newNode.previous = tail;
head.previous = newNode;
tail.next = newNode;
head = newNode;
size++;
return;
}
//Revisar si puede ser el nuevo Tail.
else if (nb.getTitle().compareTo(tail.stdBook.getTitle()) > 0){
newNode.previous = tail;
newNode.next = head;
head.previous = newNode;
tail.next = newNode;
tail = newNode;
size++;
return;
}
//Buscar el lugar correcto para ingresar.
else{
Node current = head.next;
for(int i = 0; i < size; i++){
if (nb.getTitle().compareTo(current.stdBook.getTitle()) < 0){
newNode.previous = current.previous;
current.previous.next = newNode;
current.previous = newNode;
newNode.next = current;
size++;
return;
}
current = current.next;
}
}
}
//Delete a book from the list.
public void deleteBook(String bookTitle){
Node current = head;
//Revisar si la lista esta vacia primero.
if (head == null && tail == null){
System.out.println("There is no items in the list.");
return;
}
//Realizar la busqueda del string que se desea eliminar.
for(int i = 0; i < size; i++){
if(current.stdBook.getTitle().compareTo(bookTitle) == 0){
if(size == 1){
head = null;
tail = null;
}
else if(current == head){
head.previous.next = current.next;
current.next.previous = head.previous;
head = head.next;
current.next = null;
current.previous = null;
}
else if(current == tail){
tail.previous.next = current.next;
current.next.previous = tail.previous;
tail = tail.previous;
current.next = null;
current.previous = null;
}
else{
current.previous.next = current.next;
current.next.previous = current.previous;
current.previous = null;
current.next = null;
}
size--;
return;
}
current = current.next;
}
}
//Return the size of the list.
public int getSize() {
return size;
}
//Show the list of books.
public void printDList(){
Node current = head;
for(int i = 0; i < size; i++){
System.out.println(current.stdBook.getTitle());
current = current.next;
}
}
//Find a book in the list by title.
public boolean findBook(String bookTitle){
Node current = head;
if(current == null){
return false;
}
for(int i = 0; i < size; i++){
if(current.stdBook.getTitle().compareTo(bookTitle) == 0){
return true;
}
current = current.next;
}
return false;
}
//Return a book finding by index.
public Book selectBook(int index){
Node current = head;
for(int i = 0; i < index; i++){
current = current.next;
}
return current.stdBook;
}
//Get a book in the list by title.
public Book getBook(String bookTitle){
Node current = head;
for(int i = 0; i < size; i++){
if(current.stdBook.getTitle().compareTo(bookTitle) == 0){
return current.stdBook;
}
current = current.next;
}
return null;
}
}
class Node{
Book stdBook;
Node next;
Node previous;
//Constructor
public Node(){
stdBook = null;
next = null;
previous = null;
}
//Constructor con argumento
public Node(Book bookR){
this.stdBook = bookR;
next = null;
previous = null;
}
}
// java classes are reference objects by default
//just replacing them by pointers will work.
// replace . with ->
//cout instead print
//direct comparison of strings done
class Node
{
private:
Book* stdBook;
Node* next;
Node* previous;
public:
//Constructor
Node()
{
stdBook = NULL;
next = NULL;
previous = NULL;
}
//Constructor con
argumento
Node(Book* bookR)
{
this -> stdBook = bookR;
next = NULL;
previous = NULL;
}
};
class DoublyLinkedList
{
private:
int size; //Variable que define el tamano de
la lista.
Node* head;
Node* tail; //Nodos que definen el Head y Tail
en la lista.
public:
//Constructor
DoublyLinkedList()
{
this -> head =
NULL;
this -> tail =
NULL;
this -> size = 0;
}
//Insert a new book in alphabetic
order.
void insert(Book* nb)
{
//Creamos uno nuevo
nodo con el libro que queremos ingresar.
Node* newNode = new
Node(nb);
//Insertar si la
lista esta vacia.
if(size == 0)
{
head = newNode;
tail = head;
size++;
return;
}
//Revisar si el libro
ya existe en la lista
else
{
Node* current = head;
for(int i = 0; i < size; i++)
{
if(nb -> getTitle() == current -> stdBook ->
getTitle())
{
cout << "Already exist a book with that name.";
return;
}
current = current -> next;
}
}
//Revisar si seria el nuevo head.
if (nb ->
getTitle() < head->stdBook->getTitle())
{
newNode -> next = head;
newNode -> previous = tail;
head -> previous = newNode;
tail -> next = newNode;
head = newNode;
size++;
return;
}
//Revisar si puede ser el nuevo Tail.
else if (nb ->
getTitle() > head->stdBook->getTitle())
{
newNode -> previous = tail;
newNode -> next = head;
head -> previous = newNode;
tail -> next = newNode;
tail = newNode;
size++;
return;
}
//Buscar el lugar
correcto para ingresar.
else
{
Node* current = head->next;
for(int i = 0; i < size; i++)
{
if (nb->getTitle() <
current->stdBook->getTitle())
{
newNode->previous = current->previous;
current->previous->next = newNode;
current->previous = newNode;
newNode->next = current;
size++;
return;
}
current = current->next;
}
}
}
//Delete a book from the list.
void deleteBook(string bookTitle)
{
Node* current = head;
//Revisar si la lista esta vacia primero.
if (head == NULL && tail ==
NULL)
{
cout<<"There is no
items in the list.";
return;
}
//Realizar la busqueda del string que se desea eliminar.
for(int i = 0; i < size; i++)
{
if(current->stdBook->getTitle() == bookTitle)
{
if(size == 1)
{
head = null;
tail = null;
}
else if(current == head)
{
head->previous->next = current->next;
current->next->previous = head->previous;
head = head->next;
current->next = null;
current->previous = null;
}
else if(current == tail)
{
tail->previous->next = current->next;
current->next->previous = tail->previous;
tail = tail->previous;
current->next = null;
current->previous = null;
}
else
{
current->previous->next = current->next;
current->next->previous = current->previous;
current->previous = null;
current->next = null;
}
size--;
return;
}
current = current.next;
}
}
//Return the size of the list.
int getSize()
{
return size;
}
//Show the list of books.
void printDList()
{
Node* current = head;
for(int i = 0; i <
size; i++)
{
cout<< current->stdBook->getTitle());
current = current.next;
}
}
//Find a book in the list by title.
bool findBook(string bookTitle)
{
Node current = head;
if(current ==
NULL)
{
return 0;
}
for(int i = 0; i < size; i++)
{
if(current->stdBook->getTitle()==bookTitle)
{
return 1;
}
current = current->next;
}
return 0;
}
//Return a book finding by index.
public Book selectBook(int index){
Node* current = head;
for(int i = 0; i < index; i++){
current =
current->next;
}
return current->stdBook;
}
//Get a book in the list by title.
public Book getBook(String bookTitle)
{
Node* current = head;
for(int i = 0; i < size; i++)
{
if(current->stdBook->getTitle() == (bookTitle))
{
return current->stdBook;
}
current =
current->next;
}
return NULL;
}
};
COMMENT DOWN FOR ANY QUERIES AND,
LEAVE A THUMBS UP IF THIS ANSWER HELPS YOU.
Hi! Can someone can convert this java code to c++. ASAP thanks I will thumbs up Here's the code: ...
Improve the speed of public T get(int i) by having it work backward from the end of the array if you attempt to get a member which is closer to the end than the start. This improvement will be tested through timing tests on large lists. The method should still return null if i is not a valid index. Code import java.util.Iterator; public class DLList<T> implements Iterable<T> { private static class Node<T> { public Node<T> prev, next;...
Problem 2: based on java.util.LinkedList class, create MyStack class that should have the methods: push(), pop(), peek(), size(), isEmpty(). my linkedlist class is: public class Lab8_problem1 { private Node head, tail; private int size; public Lab8_problem1() { this.head = null; this.tail = null; this.size = 0; } //Insert a node at specifc Location public void insertAt(int value, int index) { Node newNode = new Node(); newNode.data = value; if(head == null){ head = newNode; tail = newNode; head.next...
JAVA: Already completed: MyList.java, MyAbstractList.java, MyArrayList.java, MyLinkedLink.java, MyStack.java, MyQueue.java. Need to complete: ReversePoem.java. This program has you display a pessimistic poem from a list of phrases. Next, this program has you reverse the phrases to find another more optimistic poem. Use the following algorithm. 1. You are given a list of phrases each ending with a pound sign: ‘#’. 2. Create a single String object from this list. 3. Then, split the String of phrases into an array of phrases...
could somone please help me to complete this ! public class MyLinkedList<AnyType> { private Node<AnyType> head, tail; private int size; public MyLinkedList() { this.head = null; this.tail = null; this.size = 0; } //1.Insert a node at the end of the list public void insert(AnyType data) { Node<AnyType> newNode = new Node(); newNode.data = data; if (head == null) { head = newNode; tail = newNode; head.next = null; tail.next = null; } else { tail.next = newNode; tail =...
Add the following method to xxxxxp3: // deletes x from sorted list k if exist, k = 0, 1, 2 private void delete(x, k) // returns position of x in sorted list k if exist otherwise, -1. k = 0, 1, 2 private int search(x, k) import java.util.Scanner; class xxxxxp3{ private node[] head = new node[3]; private class node{ int num; node link; node(int x){ num=x; link = null; } } public void prtlst(int k){ System.out.printf("\nContents of List-%d:",k); for(node cur...
can someone please fix this error in the stack file at line 18 ( class Stack2:public Stack { ) this is thew error ----> expected class name before '{' token Queue.h --> #include "Stack.hpp" template <typename ITEM> class Queue { private: ITEM item; Stack <ITEM> * s1= new Stack<ITEM>; Stack <ITEM> * s2= new Stack<ITEM>; public: Queue(){}; bool enqueue (ITEM item); bool dequeue (ITEM &item); bool check = true; ~Queue(); }; //this is the class which contains the functions of...
CONVERT THE FOLLOWING C/C++ PROGRAM INTO JAVA: //LinkedString.h #pragma once #include<iostream> #include<string> using namespace std; //declare a node datastruct struct Node { char c; Node *next; }; class LinkedString { Node *head; public: LinkedString(); LinkedString(char[]); LinkedString(string); char charAt(int) const; string concat(const LinkedString &obj) const; bool isEmpty() const; int length() const; LinkedString substring(int, int) const; //added helper function to add to linekd list private: void add(char c); };...
I need help with todo line please public class LinkedList { private Node head; public LinkedList() { head = null; } public boolean isEmpty() { return head == null; } public int size() { int count = 0; Node current = head; while (current != null) { count++; current = current.getNext(); } return count; } public void add(int data) { Node newNode = new Node(data); newNode.setNext(head); head = newNode; } public void append(int data) { Node newNode = new Node(data);...
In java Write a method public void printReverse() that prints the elements of a doubly linked list in reverse. Write a method public void delete5FromTheEnd() which deletes the 5th element from end of the list. Note that if you reach the end then you have to reverse the direction of counting. In the main() method of the test class, create a randomly generated Doubly-Linked list of 10 Integers. Next, call the delete5FromTheEnd() method and print the lists iteratively until the...
In java Write a method public void printReverse() that prints the elements of a doubly linked list in reverse. Write a method public void delete5FromTheEnd() which deletes the 5th element from end of the list. Note that if you reach the end then you have to reverse the direction of counting. In the main() method of the test class, create a randomly generated Doubly-Linked list of 10 Integers. Next, call the delete5FromTheEnd() method and print the lists iteratively until the...