Итак, я пытаюсь найти способ изменить точную функциональность этой программы, но использую мой собственный класс LinkedList вместо библиотеки Java LinkedList. Поэтому вместо импорта LinkedList я просто использую класс, который я создал. Проблема в том, что у меня много проблем с реализацией. Мне было интересно, если есть какие-либо советы о том, как сделать это или какие-либо решения?
Заранее спасибо.
Main:
File f = new File("ass3.txt");
Scanner scan = new Scanner(f);
if (f.exists() == false) {
System.out.println("File doesn't exist or could not be found.");
System.exit(0);
}
int nVertices = scan.nextInt();
int nEdges = scan.nextInt();
for (int i = 0; i < 21; i++) {
String s = scan.nextLine();
}
int[] dong = new int[99];
Graph graph = new Graph(nVertices);
for (int i = 0; i < 99; i++) {
String vertex = scan.next();
String connected = scan.next();
int weight = scan.nextInt();
dong[i] = weight;
graph.addEdge(Graph.convertInt(vertex), Graph.convertInt(connected));
}
String startPoint = scan.next();
String finishPoint = scan.next();
graph.printGraph1(dong);
LinkedList1 (Мой пользовательский класс, который я хочу использовать вместо импорта LinkedList):
static class LinkedList1 {
Node head;
static class Node {
static int data;
Node next;
Node(int d) {
data = d;
}
}
public LinkedList1 insert(LinkedList1 list, int data) {
Node new_node = new Node(data);
new_node.next = null;
if (list.head == null) {
list.head = new_node;
} else {
Node last = list.head;
while (last.next != null) {
last = last.next;
}
last.next = new_node;
}
return list;
}
public void printList(LinkedList1 list) {
Node currNode = list.head;
System.out.print("LinkedList: ");
while (currNode != null) {
System.out.print(currNode.data + " ");
currNode = currNode.next;
}
}
@Override
public String toString() {
return "Data: " + Node.data;
}
}
График:
static class Graph {
int vertex;
LinkedList<Integer> list[];
public Graph(int vertex) {
this.vertex = vertex;
list = new LinkedList[vertex];
for (int i = 0; i < vertex; i++) {
list[i] = new LinkedList<>();
}
}
public void addEdge(int source, int destination) {
//add edge
list[source].addFirst(destination);
//add back edge ((for undirected)
list[destination].addFirst(source);
}
public void printGraph() {
for (int i = 0; i < vertex; i++) {
if (list[i].size() > 0) {
System.out.print("Vertex " + convertString(i) + " is connected to: ");
for (int j = 0; j < list[i].size(); j++) {
System.out.print(list[i].get(j) + " ");
}
System.out.println();
}
}
}
public void printGraph1(int[] dong) {
for (int i = 0; i < vertex; i++) {
if (list[i].size() > 0) {
System.out.print("Vertex " + convertString(i) + " is connected to: ");
for (int j = 0; j < list[i].size(); j++) {
int l = list[i].get(j);
System.out.print(convertString(l) + "(" + dong[j] + ") ");
}
System.out.println();
}
}
}
static int convertInt(String convert) {
switch (convert) {
case "a":
return 0;
case "b":
return 1;
case "c":
return 2;
case "d":
return 3;
case "e":
return 4;
case "f":
return 5;
case "g":
return 6;
case "h":
return 7;
case "i":
return 8;
case "j":
return 9;
case "k":
return 10;
case "l":
return 11;
case "m":
return 12;
case "n":
return 13;
case "o":
return 14;
case "p":
return 15;
case "q":
return 16;
case "r":
return 17;
case "s":
return 18;
case "t":
return 19;
}
return 0;
}
}
static String convertString(int convert) {
switch (convert) {
case 0:
return "a";
case 1:
return "b";
case 2:
return "c";
case 3:
return "d";
case 4:
return "e";
case 5:
return "f";
case 6:
return "g";
case 7:
return "h";
case 8:
return "i";
case 9:
return "j";
case 10:
return "k";
case 11:
return "l";
case 12:
return "m";
case 13:
return "n";
case 14:
return "o";
case 15:
return "p";
case 16:
return "q";
case 17:
return "r";
case 18:
return "s";
case 19:
return "t";
}
return "";
}