Мой код - это модификация существующего кода, которая создает двусвязный список из серии чисел и успешно печатает их в консоли. Разница в том, что мой код должен брать буквы и цифры из входного файла, одинаково помещать их в связанный список и печатать их в выходном файле, начиная с последнего узла.
public class Node{
int data;
Node next;
Node prev;
};
Node start;
(...)
static void display() throws IOException
{
Node last = (start).prev;
Node temp = (start).prev;
File f = new File("STDOUT.txt");
FileWriter op = new FileWriter(f);
BufferedWriter bw = new BufferedWriter(op);
while (temp.prev != start) {
System.out.printf("%d ", temp.data);
bw.write(temp.data + " ");
temp = temp.prev;
}
System.out.printf("%d", temp.data);
bw.write(temp.data + " ");
System.out.printf("\nData printed successfully");
bw.close();
op.close();
//function prints single number because it doesn't make new nodes
}
/* Driver code*/
public static void main(String[] args) throws IOException {
Node start = null;
/* Start with the empty list */
start = null;
char task = 0;
int value;
int find;
try {
File f = new File("STDIN.txt");
FileReader op = new FileReader(f);
BufferedReader br = new BufferedReader(op);
System.out.println("file located and opened\n");
br.close();
op.close();
}
catch(Exception e){
System.out.println("file not located\n");
}
File f = new File("STDIN.txt");
FileReader op = new FileReader(f);
BufferedReader br = new BufferedReader(op);
while(task != 'd' && task != 'D') {
task = (char)br.read();
if(task == 'b' || task == 'B') {
br.skip(1);
value = br.read();
insertBegin(value);
}
else if(task == 'e' || task == 'E') {
br.skip(1);
value = br.read();
insertEnd(value);
}
else if(task == 'a' || task == 'A') {
br.skip(1);
value = br.read();
br.skip(1);
find = br.read();
insertAfter(value, find);
}
else {
display();
task = 'd';
}
}
br.close();
op.close();
}
Но функция печатает только одну цифру в функции: 52, которая даже не является одним из чисел. Только один узел сделан, и это не правильный номер. Как настроить функцию или входной файл так, чтобы он вставлял другие узлы и печатал их так, как я хочу? Входной файл должен выглядеть следующим образом:
e 500
b 4
e 70
e 908
a 650 500
и вывод должен выглядеть следующим образом : 908 70 650 500 4
Обе эти функции - единственные, которые я тщательно отредактировал, но если вам нужно увидеть остальную часть кода, чтобы определить мою проблему, дайте мне знать, чтобы я тоже это показал.