설명
public class NameCardNode {
private String name;
private String phoneNumber;
NameCardNode link = null;
public NameCardNode() {
// TODO Auto-generated constructor stub
this.name = null;
this.link = null;
}
public NameCardNode(String data, String phoneNumber, NameCardNode node) {
// TODO Auto-generated constructor stub
this.name = data;
this.link = node;
this.phoneNumber = phoneNumber;
}
public NameCardNode(String data, String phoneNumber) {
// TODO Auto-generated constructor stub
this.name = data;
this.phoneNumber = phoneNumber;
}
public String getData() {
return "이름 : " + this.name + " 연락처 : " + this.phoneNumber;
}
public String getName() {
return name;
}
}
public class NameCardNodeList {
private NameCardNode head = null;
public NameCardNodeList() {
// TODO Auto-generated constructor stub
this.head = null;
}
public void insertFirstNode(String name, String phoneNumber){
NameCardNode newNode = new NameCardNode(name, phoneNumber);
if (this.head == null) {
this.head = newNode;
}
else{
NameCardNode tmpListNode = head;
this.head = newNode;
newNode.link = tmpListNode;
}
}
public void insertMiddleNode(NameCardNode pre, String name, String phoneNumber){
NameCardNode newNode = new NameCardNode(name, phoneNumber);
newNode.link = pre.link;
pre.link = newNode;
}
public void insertLastNode(String name, String phoneNumber){
NameCardNode newNode = new NameCardNode(name, phoneNumber);
if(head == null){
this.head = newNode;
}
else{
NameCardNode temp = head;
while(temp.link != null) temp = temp.link;
temp.link = newNode;
}
}
public void deleteLastNode(){
NameCardNode pre, temp;
if(head == null) return;
if(head.link == null){
head = null;
}
else{
pre = head;
temp = head.link;
while(temp.link != null){
pre = temp;
temp = temp.link;
}
pre.link = null;
}
}
public NameCardNode searchNode(String data){
NameCardNode temp = this.head;
while(temp != null){
if(data == temp.getName())
return temp;
else temp = temp.link;
}
return temp;
}
public void reverseList(){
NameCardNode next = head;
NameCardNode current = null;
NameCardNode pre = null;
while(next != null){
pre = current;
current = next;
next = next.link;
current.link = pre;
}
head = current;
}
public void printList(){
NameCardNode temp = this.head;
System.out.printf("L = (");
while(temp != null){
System.out.printf(temp.getData());
temp = temp.link;
if(temp != null){
System.out.printf(", ");
}
}
System.out.println(")");
}
}
public class NameCardNodeListMain {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
NameCardNodeList L = new NameCardNodeList();
System.out.println("(1) 새로운 인명 등록 하기");
L.insertLastNode("허용운","777-7777");
L.insertLastNode("강정식","123-4567");
L.insertLastNode("김동훈","999-8888");
L.printList();
System.out.println("(2) 맨앞에 장윤정 인명 삽입하기");
L.insertFirstNode("장윤정", "123-7654");
L.printList();
System.out.println("(3) 푸르나 주소를 찾고 정보를 출력");
NameCardNode pre = L.searchNode("푸르나");
if(pre == null)
System.out.println("검색실패>> 찾는 데이터가 없습니다.");
System.out.println("(4) 강정식 주소를 찾고 정보를 출력");
pre = L.searchNode("강정식");
System.out.println(pre.getData());
System.out.println("(5) 리스트의 노드를 역순으로 바꾸기");
L.reverseList();
L.printList();
System.out.println("(6) 리스트의 마지막 노드 삭제하기");
L.deleteLastNode();
L.printList();
}
}