Я пытаюсь создать отдельный список, где я могу добавить узлы, которые будут иметь целочисленное значение и следующее значение. Мне нужно пройти этот список, чтобы добавить элементы списка. Все должно быть в пределах одного файла. Я новичок в java и могу использовать некоторую помощь. Вот мой код:
package LargestSum;
import java.io.*;
import java.util.Scanner;
public class LargestSum {
public static class LinkedList {
private int num;
private LinkedList node;
private LinkedList head;
private LinkedList tail;
private int listSize;
public LinkedList next;
public LinkedList(){
node = null;
num = 0;
head = null;
tail = null;
listSize = 0;
}
public void setLink(LinkedList l){
node = l;
}
public void setNum(int n){
num = n;
}
public LinkedList getNode(){
return node;
}
public int getNum(){
return num;
}
public boolean empty(){
return head == null;
}
public int getListSize(){
return listSize;
}
public void insert(int set){
LinkedList list = new LinkedList();
listSize++;
if(head == null){
head = list;
tail = head;
}
else {
tail.setLink(list);
tail = list;
}
}
}
public static void main(String[] args) throws IOException {
String fileName = "in.txt";
LinkedList list = new LinkedList();
Scanner numbers = new Scanner(new File(fileName));
while(numbers.hasNext()){
int num = numbers.nextInt();
list.insert(num);
System.out.println(num);
}
int listSize = list.getListSize();
}
}
Я был бы признателен за любую помощь и указатели. Спасибо.
Проблема в вашем коде заключается в том, что вы инициализируете связанный список при каждом добавлении элемента. поэтому каждый узел не связан друг с другом. что вы можете сделать, это сделать два класса: 1) узел и 2) LinkedList
узел будет иметь контейнерный элемент, который обозначает элемент в LinkedList. Класс LinkedList будет иметь все функциональные возможности, которые вы хотите сделать.
Я внес изменения в свой код, а не вставляя весь новый код. так что вы можете понять разницу между ними, сравнив свой код с ним.
//package LargestSum;
import java.io.*;
import java.util.Scanner;
public class Test {
public static class node{
int num;
node next;
public node(int num){
this.num = num;
next = null;
}
public node getNext(){
return next;
}
public void setNext(node t){
this.next = t;
}
public int getNum(){
return this.num;
}
}
public static class LinkedList {
//private int num;
//private LinkedList node;
private node head;
private node tail;
private int listSize;
//public LinkedList next;
public LinkedList(){
// node = null;
// num = 0;
head = null;
tail = null;
listSize = 0;
}
//public void setLink(LinkedList l){
// node = l;
//}
//public void setNum(int n){
// num = n;
//}
//public LinkedList getNode(){
// return node;
//}
//public int getNum(){
// return num;
//}
public boolean empty(){
return head == null;
}
public int getListSize(){
return listSize;
}
public void print(){
node traverse = head;
while(traverse!=null){
System.out.println(traverse.getNum());
traverse = traverse.getNext();
}
}
public void insert(int set){
// LinkedList list = new LinkedList();
node temp = new node(set);
listSize++;
if(head == null){
head = temp;
tail = temp;
}
else {
tail.setNext(temp);
tail = tail.getNext();
}
}
}
public static void main(String[] args) throws IOException {
// String fileName = "in.txt";
LinkedList list = new LinkedList();
Scanner numbers = new Scanner(System.in);
int x=10;
while(x >0){
int num = numbers.nextInt();
list.insert(num);
System.out.println("++++++++++++++++++++++++++++++++++++++++++++");
list.print();
x--;
}
System.out.println("++++++++++++++++++++++++++++++++++++++++++++");
list.print();
int listSize = list.getListSize();
}
}
Здесь я реализовал очень простой. вы не можете добавить другие функции в этот код напрямую. если вы хотите добавить другой, просто используйте этот тип двух классов, как я использовал здесь, и добавьте функции в класс LinkedList.
Если у вас есть какие-либо дальнейшие комментарии, комментируйте меня.
Благодаря,
Bhavik
empty()
вы также должны установитьlistSize
в ноль. Кроме того, с точки зрения полноты, вы можете также установитьtail
вnull
.