这是一项任务.我必须创建一个循环链表并删除列表中的每三个数字.当我的程序到达列表的末尾时,它应该返回到头部并继续该过程,直到只剩下一个数字.
我在网上搜索了一些其他参考书,但无法解决我的问题.我发现的大多数参考文献都说如下:
除了循环列表没有结束这一事实外,它们与常规列表完全相同
或者(取自我的教科书):
如果最后一个节点的后继者是第一个,则单个链接列表循环链接
但这些并没有说明如何做到这一点.我也试过使用我在这个网站上找到的一些代码,但这并没有清楚.
我可以创建一个列表(我不知道它是否是循环链表)并显示它,但元素的顺序很奇怪:
如果没有正确的列表,我可以正确删除.以下代码有什么问题:
public class LastNumberDemo {
public static void main(String[] args) {
LastNumberNode ll=new LastNumberNode();
System.out.println("how long is the list: ");
Scanner keyboard = new Scanner(System.in);
int input = keyboard.nextInt();
if(input<=0) {
System.out.println("no number to creat list");
}
if(input==1) {
System.out.println("The Last number is 1.");
}
else {
String[] n=new String[input];
for(int index=0; index<n.length; index++)
n[index]=Integer.toString(index+1);
for(String e:n)
ll.add(e);
System.out.print("The list contains: \n");
ll.print();
System.out.print("\nThe last number is: ");
ll.remove();
ll.print();
} …Run Code Online (Sandbox Code Playgroud) 谢谢Marko.我重写了代码.尽量使它变得简单.这次它真的可以编译.但它只能删除重复的项目彼此相邻.例如,如果我输入1 2 3 3 4 4 5 1 - 输出为1 2 3 4 5 1.它最终无法获取副本.(顺便说一句:这个网站的新手,如果让任何显示混乱我的道歉)
这是新代码:
import java.util.*;
public class SetListDemo{
public static void main(String[] args){
SetListType newList = new SetListType();
Scanner keyboard = new Scanner(System.in);
System.out.println( "Enter a series of items: ");
String input = keyboard.nextLine();
String[] original = input.split(" ");
for (String s : original)
newList.insert(s);
List<String> finalList = new ArrayList(Arrays.asList(original)) ;
Iterator<String> setIterator = finalList.iterator();
String position = null;
while(setIterator.hasNext()){
String secondItem = setIterator.next();
if(secondItem.equals(position)){
setIterator.remove();
} …Run Code Online (Sandbox Code Playgroud)