对于这个实验,我无论如何也不知道该怎么做。这是我的作业提示的一部分:
//return the data at specific position if it is present
E getData(int index)
我假设我要显示一个使用索引绑定到节点的值。然而,我的教授让我们用一种奇怪的方式来做这件事,所以我的链表存在,但我不知道如何调用它。
下面的代码使列表出现在控制台中:
public static void main(String[] args) {
LinkedList<Integer> myList = new LinkedList<Integer>();
//Add Data
myList.addData(4);
myList.addData(2);
myList.addData(1);
myList.printList();
//Add Data At End
myList.addDataAtEnd(5);
System.out.println();
myList.printList();
//Add Data At Specific Spot
myList.addDataSpecificSpot(3);
System.out.println();
myList.printList();
方法如下:
printList
public void printList() {
Node<E> current = head;
while(current != null) {
System.out.print(current.data + " --> ");
current = current.next;
}
}
addData
public void addData(E data) {
Node<E> newNode = new Node<E>(data);
newNode.next = head;
head = newNode;
}
addDataAtEnd
public void addDataAtEnd(E data) {
Node<E> newNode = new Node<E>(data);
Node<E> current = head;
while(current.next != null) {
current = current.next;
}
newNode.next = null;
current.next = newNode;
}
addDataSpecificSpot
public void addDataSpecificSpot(E data) {
Node<E> newNode = new Node<E>(data);
Node<E> current = head;
while(current.next.next.next != null) {
current = current.next;
}
newNode.next = current.next;
current.next = newNode;
}
因此,在所有这些发生之后,控制台输出如下:
1 --> 2 --> 4
1 --> 2 --> 4 --> 5
1 --> 2 --> 3 --> 4 --> 5
如何实现getData方法来查找某个索引中的值?我真不知道该怎么办才好。
您可以使用计数器并遍历List。
检查指定位置的计数器,如果计数器小于指定的数字,则表示列表中没有那么多数据。这样你就可以实现逻辑了。
public void getDataFromSpecifiedLocation(E data, int location) {
Node<E> newNode = new Node<E>(data);
Node<E> current = head;
int counter=0;
while(current.next.next.next != null && counter<location) {
current = current.next;
counter++;
if(counter==location)
break;
}
System.out.println("Node at location "+ location+" is "+ current);
}
就像这样,你可以实现这个逻辑。