Em gặp rắc rối trong việc viết function delete và search dựa theo tên của employee mình mún. Em không được phép sử dụng arraylist trong trường hợp này và cũng không được sử dụng thư viện linked list. Các anh có thể giúp em được không ạ. E cảm ơn nhiều. Đây là source code của e:
import java.util.Scanner;
import java.io.Serializable;
class Employee implements Serializable{
int ID;
String name;
String address;
Employee(int emp_ID, String emp_name, String emp_address){
ID = emp_ID;
name = emp_name;
address = emp_address;
}
public void print(){
System.out.println(ID);
System.out.println(name);
System.out.println(address);
}
@Override
public String toString() {
return ID + "-" + name + "-" + address;
}
}
class Node
{
protected Employee emp;
protected Node link;
public Object name;
public Node in;
public Node()
{
link = null;
emp = null;
}
public Node(Employee e,Node n)
{
emp = e;
link = n;
}
public void setLink(Node n)
{
link = n;
}
public void setData(Employee e)
{
emp = e;
}
public Node getLink()
{
return link;
}
public Employee getData()
{
return emp;
}
}
class linkedList
{
protected Node start ;
protected Node end ;
public int size ;
public linkedList()
{
start = null;
end = null;
size = 0;
}
public void insertAtStart(Employee e)
{
Node nptr = new Node(e,null);
nptr.setLink(start);
if(start == null)
{
start = nptr;
nptr.setLink(start);
end = start;
}
else
{
end.setLink(nptr);
start = nptr;
}
size++ ;
}
public void display()
{
System.out.print("\nEmployee Management= ");
Node ptr = start;
if (size == 0)
{
System.out.print("empty\n");
return;
}
if (start.getLink() == start)
{
System.out.print(start.getData()+ "\n");
return;
}
System.out.print(start.getData()+ "" + "\n");
ptr = start.getLink();
while (ptr.getLink() != start)
{
System.out.print(ptr.getData()+ "" + "\n");
ptr = ptr.getLink();
}
System.out.print(ptr.getData()+ "\n");
}
public void searchByName(){
}
public void deleteByName(){
}
}
public class CurrilarLinkedList
{
public static void main(String[] args)
{
int ID = 0;
String name = null;
String address = null;
Employee emp = null;
Scanner scan = new Scanner(System.in);
linkedList list = new linkedList();
System.out.println("Circular Singly Linked List Test\n");
char ch;
do
{
System.out.println("\nCircular Singly Linked List Operations\n");
System.out.println("1. insert at begining");
System.out.println("2. delete by name");
System.out.println("3. search by name");
int choice = scan.nextInt();
switch (choice)
{
case 1 :
System.out.print("Please input an Employee \n");
Scanner myScanner = new Scanner(System.in);
System.out.println("Please input an Employee ID");
ID = myScanner.nextInt();
myScanner.nextLine();
System.out.println("Please input an Employee Name");
name = myScanner.nextLine();
System.out.println("Please input an Employee Address");
address = myScanner.nextLine();
emp = new Employee(ID,name,address);
list.insertAtStart(emp);
break;
case 2 :
break;
case 3 :
break;
default :
System.out.println("Wrong Entry \n ");
break;
}
list.display();
System.out.println("\nDo you want to continue (Type y or n) \n");
ch = scan.next().charAt(0);
} while (ch == 'Y'|| ch == 'y');
}
}
Ý tưởng:
- Duyệt từ đầu hay điểm bắt đầu check tên. đúng thì xóa 1 phần tử bình thường
Bạn mắc ở chỗ nào?