【发布时间】:2018-12-18 20:40:52
【问题描述】:
我已经完成了将节点从文本文件添加到列表的单链接。我现在试图让用户从链接列表中选择一个节点来签入电影或从文本文件中签出电影。我一直试图解决这个问题很长时间没有成功。任何贡献或帮助将不胜感激!
这是我的搜索功能不完整...
public void search ()
{
System.out.print ("Which one would like like to check out: ");
Scanner check = new Scanner(System.in);
String usercheck = check.next();
SinglyLinkedList myList = new SinglyLinkedList();
Node n = myList.gethead();
for (int i = 0; i < myList.getSize; i++)
{
if (n.getTitle.equals(usercheck))
{
return ("found");
} else {
return n;
}
n = n.getNext();
}
}
这是我完成的单链表,供参考搜索功能...
public class SinglyLinkedList
{
//Implement a Node
private static class Node
{
private String[] actors;
private String title;
private String director;
private String year;
private int numActors;
private String status;
private String userID;
private String date;
private Node next;
public Node(String e, Node n)
{
String[] data = e.split(" ");
title = data[0];
director = data[1];
year = data[2];
numActors = Integer.parseInt(data[3]);
actors = new String[numActors];
int i = 0;
for (i = 0; i < numActors; i++)
{
actors[i] = data[4 + i];
}
status = data[4 + numActors];
if (status.equals("out"))
{
userID = data[5 + numActors];
date = data[6 + numActors];
}
next = n;
}
public int getNumActors()
{
return numActors;
}
public String gettitle()
{
return title;
}
public String[] getActors()
{
return actors;
}
public String getDirector()
{
return director;
}
public String getYear()
{
return year;
}
public String getStatus()
{
return status;
}
public String getUserID()
{
return userID;
}
public String getDate()
{
return date;
}
public Node getNext()
{
return next;
}
public void setNext(Node n)
{
next = n;
}
}
//List Implementation
private Node head = null;
private Node tail = null;
private int size = 0;
public SinglyLinkedList()
{};
public int getSize()
{
return size;
}
public Node getHead()
{
return head;
}
public boolean isEmpty()
{
return size == 0;
}
public String first()
{
if(isEmpty())
{
return null;
}
return head.gettitle();
}
public String last()
{
if(isEmpty())
{
return null;
}
return tail.gettitle();
}
public void addFirst(String e)
{
head = new Node(e, head);
if(size == 0)
{
tail = head;
}
size++;
System.out.println("Added head node with " + head.getDirector());
}
public void addLast(String e)
{
Node newNode = new Node(e, null);
if(isEmpty())
{
head = newNode;
}else{
tail.setNext(newNode);
}
tail = newNode;
size++;
System.out.println("Added tail node with " + tail.getDirector());
}
public String removeFirst()
{
if(isEmpty())
{
return null;
}
String answer = head.gettitle();
head = head.getNext();
size--;
if(size == 0)
{
tail = null;
}
System.out.println("Removed head node with " + answer);
return answer;
}
}
【问题讨论】:
-
new返回一个指向对象的指针,而不是一个对象。 -
不仅搜索不完整,甚至无法编译。它被声明为返回 void 但它确实尝试两次返回,每次返回不同类型的值。现在,遍历列表并搜索值有多难??
-
@SharonBenAsher 这对你来说可能并不难,但我仍在学习如何编程。如果你已经知道怎么做,那么帮助别人有多难??
标签: java linked-list nodes singly-linked-list