고쳐야 할 부분들이 존재 하겠지만..
음.. 자바에서는 포인터나 참조 이해하기 위한 코드라고 하면 좋을가나..?
아무튼 사용을 하려면 변수 선언부의 접근 제한을 바꿔야 하고 등등의 문제를 해결 해야 할듯 하다...
일단 구현해 본 메소드들은 잘 돌아가나...
틀린부분이나 고쳐야 할 부분을 말해 주면 배리 감사...+_+!
Source
public class DoubleLinkedList
{
// 변수 선언부.
protected String Sta;
protected int PosX;
protected int PosY;
protected DoubleLinkedList Prev;
protected DoubleLinkedList Next;
// 상수 선언.
final private static DoubleLinkedList Head = new DoubleLinkedList();
final private static DoubleLinkedList Tail = new DoubleLinkedList();
public DoubleLinkedList()
{// 생성자.
Sta = null;
PosX = 0;
PosY = 0;
Prev = Next = null;
}
public DoubleLinkedList( String sta, int x, int y )
{// Data 저장.
Sta = sta;
PosX = x;
PosY = y;
}
public void Init()
{// 초기화 생성자에 같이 실행해도 그다지 문제는 없을 거 같다.
Head.Next = Tail;
Head.Prev = null;
Tail.Next = null;
Tail.Prev = Head;
}
public void AddNode( String sta, int x, int y )
{// 노드 추가.
// 신규노드 생성.
DoubleLinkedList newNode = new DoubleLinkedList( sta, x, y );
// 링크.
// 전 노드와의 관계.
Tail.Prev.Next = newNode;
newNode.Prev = Tail.Prev;
// 후 노드와의 관계.
newNode.Next = Tail;
Tail.Prev = newNode;
}
public boolean RemoveNode( String sta )
{// 노드 제거.
DoubleLinkedList remNode = SearchNode( sta );
if( remNode != null )
{// 제거할 노드가 존재.
remNode.Prev.Next = remNode.Next;
remNode.Next.Prev = remNode.Prev;
remNode = null;
return true;
}
else
return false;
}
public DoubleLinkedList SearchNode( String sta )
{// 노드 검색.
DoubleLinkedList pNode = this;
while( pNode != Tail )
{// 끝을 만날 때까지 순차 탐색.
if( pNode.Sta == sta )
{// 찾는 노드가 있다면 리턴.
return pNode;
}
// 다음으로 이동.
pNode = pNode.Next;
}
// 못찾았다면 null을 반환.
return null;
}
public void NodeDataView()
{// 모든 노드의 정보를 보여준다.
// 실제 정보는 Head 다음부터 저장된다.
DoubleLinkedList pNode = Head.Next;
while( pNode != Tail )
{
System.out.println( "Sta : " + pNode.Sta + " PositionX : " + pNode.PosX
+ " PositionY : " + pNode.PosY );
pNode = pNode.Next;
}
}
}
'MISCELLANEOUSNESS' 카테고리의 다른 글
[JAVA] JFrame에서 이미지 등록/보이기 (0) | 2007.09.16 |
---|---|
[JAVA] 네트워크 스트림 열기 (0) | 2007.09.16 |
[SWT] SWT 개발 환경 설정하기 (0) | 2007.09.15 |
댓글0