octain
octain

Reputation: 964

Reverse Linked List error- Java

I am trying to reverse a linked list in Java using stack I keep on receiving this error:

LinkStackApp.java:84: error: constructor LinkStack in class LinkStack cannot be applied to given types;
        LinkStack stackrev = new LinkStack(stackSize);
                             ^
  required: no arguments
  found: int
  reason: actual and formal argument lists differ in length
1 error

I don't know where it finds int, I tried changing the Strings to char and vice versa but just keep on getting more errors any ideas? here is my full code:

import java.io.*;
import java.util.Scanner;

class Link
{
   public char dData;
   public Link next;

   public Link(char dd)
   {
      dData = dd;
   }
   public void displayLink()
   {
      System.out.print(dData + " ");
   }
}
class LinkList
{
   private Link first; //ref to first item on the list

   public LinkList() //no items on list yet
   {
      first = null;
   }
   public boolean isEmpty()
   {
      return (first == null);
   }
   public void insertFirst(char dd)
   {
      Link newLink = new Link(dd);
      newLink.next = first;
      first = newLink;
   }
   public char deleteFirst()
   {
      Link temp = first;
      first = first.next;
      return temp.dData;
   }
   public void displayList()
   {
      Link current = first;
      while(current != null)
      {
         current.displayLink();
         current = current.next;
      }
      System.out.println(" ");
   }

}  
class LinkStack
{
   private LinkList theList;

   public LinkStack()
   {
      theList = new LinkList();
   }
   public void push(char j)
   {
      theList.insertFirst(j);
   }
   public char pop()
   {
      return theList.deleteFirst();
   }
   public boolean isEmpty()
   {
      return (theList.isEmpty());
   }
}
class Reverser{
    private String input;
    private String output;

    public Reverser(String in){
        input = in;
    }
    public String doRev(){
        int stackSize = input.length();
        LinkStack stackrev = new LinkStack(stackSize);

        for (int j = 0; j <input.length(); j++){
            char ch = input.charAt(j);
            stackrev.push(ch);
        }
        output = "";
        while(!stackrev.isEmpty()){
            char ch = stackrev.pop();
            output = output + ch;
        }
        return output;
    }

}

class LinkStackApp
{
   public static void main(String[] args)
   {
        Scanner input = new Scanner(System.in);
        String inputString, outputString;

        while(true){
            System.out.print("Enter A String: ");
            inputString = input.nextLine();

            if(inputString.equals(""))
                break;
            Reverser therev = new Reverser(inputString);
            outputString = therev.doRev();
            System.out.println("Reversed: "+outputString);

        }


   }

}

Upvotes: 0

Views: 109

Answers (1)

L. Blanc
L. Blanc

Reputation: 2310

stackSize is an int. It's telling you to call the constructor with no params.

The correct constructor invocation is:

LinkStack stackrev = new LinkStack(); 

Upvotes: 2

Related Questions