•要求用户输入一组5个数字。
•对于输入的每个号码,将其添加到链接列表的前面。
•现在,要求用户输入搜索号码。
•使用for循环或while循环,搜索该数字是否存在于链表中的某个节点中。
•如果存在匹配的节点,请使用数据88创建一个新节点,并将其插入匹配节点之前。否则,显示消息“No such number”。
大家好,我希望你帮我解决最后一部分的java代码。
public static void main(String[] args) {
LinkedList list = new LinkedList();
Scanner sc = new Scanner(System.in);
System.out.println("Enter a number: ");
int num = sc.nextInt(); sc.nextLine();
for(int i = 0; i < 4; i++){
list.addFront(num);
}
System.out.print("Enter a number: ");
int search = sc.nextInt(); sc.nextLine();
for(Node j = list.getHead(); j!= null; j=j.getNext()){
if((Integer)j.getData()==search){
list.addNode();
}else{
System.out.println("No such number");
}
}
public static Node addNode(T n);//???
}
答案 0 :(得分:1)
我认为你的代码甚至不适用于第一点。你所做的是读取一次数字,然后将相同的数字放入链表中4次。
要在另一个节点之前将节点添加到列表中,您需要将其放在前面的节点的索引,然后使用LinkedList的add(int index, E element)
方法。该索引可以通过indexOf(Object o)
找到。
https://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html
答案 1 :(得分:0)
Re factored your code.Here is a working solution.You don't need to create an additional function for addNode(). There is a predefined function known as add(index,element) when you are using java.util.LinkedList.But i would advice to first create your own linklist instead of using predefined LinkedList class. This will clear all your doubts.
Here i am assumming you are using java.util.LinkedList.
public static void main(String args[]){
LinkedList<Integer> list = new LinkedList<Integer>();
Scanner sc = new Scanner(System.in);
for(int i = 0; i < 4; i++)
{
System.out.println("Enter a number: ");
int num = sc.nextInt(); sc.nextLine();
list.addFirst(num);
}
System.out.print("Initial list:"+list);
System.out.print("Enter a number: ");
int search = sc.nextInt(); sc.nextLine();
Iterator<Integer > itr=list.iterator();
int i=0;
boolean flag=false;
while(itr.hasNext())
{
int data=itr.next();
if(data==search){
list.add(i,88);
flag=true;
break;
}
i++; //index of data
}
if(!flag)
{
System.out.println("No such number");
}
else
{
System.out.println("Number inserted at "+i);
}
System.out.print("final list:"+list);
sc.close();
}
Hope it helps you.