언어/JAVA
링크드 리스트 구현
김어찐
2021. 8. 9. 15:37
728x90
public class SingleLinkedList {
private Node head;
public void addFirstNode(String data)
{
Node newNode = new Node(data,head);
head = newNode;
}
public Node getLastNode()
{
for(Node currNode=head;currNode!=null;currNode=currNode.link)
{
if(currNode.link==null)
{
return currNode;
}
}
return null;
}
public void addLastNode(String data)
{
if(head==null)
{
addFirstNode(data);
return;
}
Node lastNode=getLastNode();
Node newNode = new Node(data);
lastNode.link = newNode;
}
public void insertAfterNode(Node preNode, String data)
{
if(preNode==null)
{
System.out.println("선행노드가 없어 삽입이 불가능합니다");
return;
}
Node newNode = new Node(data,preNode.link);
preNode.link = newNode;
}
public Node getNode(String data)
{
for(Node currNode=head;currNode!=null;currNode=currNode.link)
{
if(currNode.data.equals(data))
{
return currNode;
}
}
return null;
}
public Node getPreviousNode(Node target)
{
for(Node currNode=head;currNode!=null;currNode=currNode.link)
{
if(currNode.link==target)
{
return currNode;
}
}
return null;
}
public void deleteNode(String data)
{
Node targetNode = getNode(data);
if(targetNode==null)
{
System.out.println("삭제할 노드가 없어서 삭제가 불가능합니다.");
}
Node preNode = getPreviousNode(targetNode);
if(preNode == null)
{
head = targetNode.link;
}
else
{
preNode.link = targetNode.link;
}
targetNode.link=null;
}
public void printList()
{
System.out.print("L = ( ");
for(Node currNode=head;currNode!=null;currNode=currNode.link)
{
System.out.print(currNode.data+" ");
}
System.out.println(" ) ");
}
}
728x90