我是大学的一名 CS 学生,我在这个项目中遇到了问题,我必须在不导入链表的情况下使用节点创建链表,以及对列表执行一些方法。我是编码的初学者,所以假设我什么都不知道,因为可能就是这种情况,哈哈。
import java.io.*;
import java.lang.*;
public class List {
public int listCount = 0;
public char[] linkedList;
public List() throws FileNotFoundException {
}
public List(char[] array) throws FileNotFoundException {
if (array.length == 1) {
Node head = new Node(array[0]);
} else if (array.length > 1) {
Node head = new Node(array[0]);
Node traverse = head;
for (int i = 1; i < array.length; i++) {
while (traverse.nextNode != null) {
traverse = traverse.nextNode;
}
traverse.nextNode = new Node(array[i]);
listCount++;
}
}
}
public List(String w) throws FileNotFoundException {
char[] array2 = new char[w.length()];
for (int i = 0; i < w.length(); i++) {
array2[i] = w.charAt(i);
}
List str = new List(array2);
}
/* Find the character at a index
@param int index
return the character at the chosen index
*/
public char charAt(int index) throws IndexOutOfBoundsException {
char results = linkedList[0];
if (index < linkedList.length && index >= 0) {
results = linkedList[index];
}
return results;
}
public String concat(int index1, int index2) {
return null;
}
/* Determine if the list is empty
return whether the given conditions are true or false
*/
public boolean isEmpty() {
for (int i = 0; i < linkedList.length; i++) {
if (!linkedList.equals(null)) {
System.out.println("This list is not empty");
return false;
}
}
System.out.println("List is empty");
return true;
}
/* Determine the size of the list
return the size of the list
*/
public int size() {
return listCount;
}
/* Create a new String between 2 index's including the start and end index
@param beginIndex is the starting point of the new String
@endIndex is the ending point of new String
return the new String
*/
public String subString(int beginIndex, int endIndex) {
return null;
}
public void insert(Object x) throws IndexOutOfBoundsException {
if (listCount > 100 || listCount < 0) {
throw new IndexOutOfBoundsException("Bag is too large");
} else {
this.linkedList[listCount] = (char) x;
listCount++;
}
}
}
我提前感谢任何帮助或指示。我们使用单独的节点、帮助程序和驱动程序类以及 .txt 文件分配到我的列表中。我也被困在 concat 和 substring 方法上,但我想确保我首先让框架正确。再次感谢。
答案 0 :(得分:0)
如果我正确理解您的问题,您是在询问如何在不导入特定类型的情况下访问它。
导入时需要通过简单名称来识别引用的是哪种类型。要引用类型而不在导入中声明它,您需要使用其完全限定名称。例如
java.util.List<String> someList = new java.util.ArrayList<>();
无需导入 List 和 ArrayList 即可工作,因为通过声明类所在的包,可以清楚地知道引用了哪个类。
答案 1 :(得分:0)
我稍后会尝试编写代码,但这里有一本我找到的可能对您有所帮助的书。
<块引用>https://cin.ufpe.br/~grm/downloads/Data_Structures_and_Algorithms_in_Java.pdf 我从 Pearson 公司买了一本关于 DATA STRUCTURE 的书,这确实是一本好书,但我不记得太多了,是这样的,我匆忙完成的:
public class List {
private Node head = null;
private Node foot = null;
private Node newNode = null;
private Node auxNode = null;
public List() {
this.head = new Node();
this.foot = new Node();
}
public class Node {
private int adress;
private Node nextNode;
}
public void add(int value) {
this.newNode = new Node();
newNode.adress = value;
if (head == null) {
// Head of the list receive the values of the NEW NODE, so the head of the list
// is not null enymore
head = newNode;
head.nextNode = null;
} else {
// In this case Head is not null
/*The auxiliary node will receive the head and the new Node will become the new Head from the list*/
auxNode = new Node();
auxNode = head;
/*
while(auxNode.nextNode != null ) {
}
auxNode = head;
//head of the list is empty, so we can add the new node
head = newNode;//Here the new node is empty because was transfered to the head
head.nextNode = auxNode; //The head of the list receive the old node that used to be the head
if (head.nextNode == null) {
head.nextNode = newNode;
} else if (head.nextNode != null) {
}*/
}
}
}
```
I hope this help you to get some lead