Стек с использованием связанного списка, чтение входного файла с выражением постфикса - PullRequest
0 голосов
/ 27 апреля 2018

Мне нужно заполнить стек связанным списком. У меня есть универсальный класс с именем GenericStack с обычными методами. У меня есть класс Evaluator, который имеет мой метод main, и я должен прочитать входной файл выражений postfix. У меня есть класс Node для создания связанного списка. Чтобы прочитать файл с выражением постфикса, например, 6 5 2 3 + 8 * + 3 + * Я не знаю, как заполнить связанный список файлом или как его прочитать.

 public class GenericStack {
        private Node top;
        public GenericStack(){
            top = null;
        }

        public boolean isEmpty(){
            return (top == null);
        }

        public void push (Object newItem){
            top = new Node(newItem,top);
        }

        public Objectpop(){
            if(isEmpty()){
                System.out.println("Trying to pop when stack is empty.");
                return null;
            }
            else{
                Node temp = top;
                top = top.next;
                return temp.info;
            }
        }

        void popAll(){
            top = null;
        }

        public Object peek(){
            if(isEmpty()){
                System.out.println("Trying to peek when stack is empty.");
                return null;
            }
            else{
                return top.info;
            }
        }
    }

    public class Evaluator {
        public static void main(String[] args){
            GenericStack myStack = new GenericStack();
        }
    }


public class Node {
    Object info;
    Node next;

    Node(Object info, Node next){
        this.info = info;
        this.next = next;
    }

}

1 Ответ

0 голосов
/ 27 апреля 2018

Используйте java.util.Scanner, чтобы прочитать файл построчно. Затем реализуйте метод evaluation() самостоятельно

import java.io.File;
import java.io.IOException;
import java.util.*;

public class Evaluator {

// Method that evaluates postfix expressions
private static int evaluate(String expression) {

    Stack<Character> stack = new Stack<>();

    // Implement evaluation algorithm here

    return 0;
}

public static void main(String[] args) throws IOException {

    // Path to file
    String path = "file.txt";

    // Reference to file
    File file = new File(path);

    // Scanner that scans the file
    Scanner scanner = new Scanner(file);

    // List that will contain lines from file
    List<String> list = new ArrayList<>();

    // Read file in memory, line by line
    while (scanner.hasNextLine()) {

        // Add each line to list
        list.add(scanner.nextLine());
    }

    int result;

    // Loop through each line in list
    for (String line : list) {

        // Evaluate postfix expression
        result = evaluate(line);

        // Display expression = result
        System.out.println(line + " " + result);
    }

}

}

...