Linked_List (성적표작성)
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

Linked_List (성적표작성)에 대한 보고서 자료입니다.

본문내용

ic LinkNode findNode(int hak){
LinkNode current = Head.getNodeFirst();
int count=1;
while(current.getData()!=hak){
if(current.getNodeNext()==null){
System.out.println("입력한 "+hak+"학번이 리스트에 없습니다.");
break;
}
current=current.getNodeNext();
count++;
}
if(current.getData()==hak){
System.out.println("입력한 "+hak+"학번을 "+count+"번째 리스트에서 찾았습니다.");
}
return current;
}
위의 반복문은 현재 노드의 데이터 값이 입력된 데이터 값과 같지 안을 때 까지 돌아가는 반복문입니다. 만약 입력된 값이 리스트에 존재하지 않는 값이면 반복문을 만족 하지 않음으로 이 반복문은 무한루프에 빠지게 됩니다. 그래서 저는 반복문 안에 조건문을 통하여 “만약 현재 노드의 주소값이 Null 인 경우일때“ 현재의 리스트는 리스트의 마지막을 뜻함으로 리스트가 처음부터 끝까지 돌면서 입력한 데이터의 값이 없음을 뜻함으로, 리스트에 데이터가 없다고 출력후 break 문을 통하여 무한루프에서 벗어나게 하였습니다. 프로그램의 오류에서 벗어나게 만들었습니다.
두 번째, 데이터의 삽입에 대해서입니다.
제가 구현한 프로그램은 학생의 성적을 입력하고 관리 하는 프로그램입니다. 여기서 제일 처음으로 학생의 학번이 들어가는데, 학생의 학번은 그 학생의 고유 번호 임으로 중복 될 수 없습니다. 그래서 추가한 메소드는 아래와 같습니다.
public boolean insertData(int hak){
LinkNode current = Head.getNodeFirst();
int temp=0;
while(current!=null && current.getNodeNext()!=null){
if(current.getData()==hak){
temp=1;
break;
}
current=current.getNodeNext();
}
if(temp==1)
return true;
else
return false;
}
위 메소드는 LinkedList Class 에 포함 되어있습니다. 먼저 노드를 삽입 하기 전에 위 메소드를 실행하여, 현재까지 리스트안에 입력한 학번과 동일한 학번이 있는지 검색 하는 메소드입니다. 이 메소드는 boolean 를 통하여 만약 동일한 학번이 존재하면 "true" 를 리턴하고, 없으면 "false"를 리턴 하게 하여, Main class에서 학번 입력 후 입력되어 있는 학번이면 노드 삽입을 중지 시키고, 입력되어 있지 않으면 계속해서 세부 성적을 입력하는 방식을 택하였습니다. 이 메소드를 추가함으로 두 가지의 문제점을 해결 할 수 있었습니다. 첫 번째로, 동일한 학번의 입력을 막을 수 있으며, 또한 노드 삭제 시 만약 기존에 입력된 학생의 정보에서 동일한 학번의 서로 다른 학생의 정보가 입력되어 있다고 가정하면, 여기서 삭제할 때 학생의 학번을 검색해서 해당하는 학생의 학번을 삭제 하는데 두 개의 학번이 동일함으로 컴퓨터는 리스트에서 가장 먼저 검색되는 학생의 정보를 삭제 할 것입니다. 하지만 여기서 먼저 있는 학생의 정보를 사용자는 원하고, 뒤에 있는 학생의 정보를 삭제하고 싶었다고 가정하면, 이것은 프로그램의 오류라고 볼 수 있습니다. 그래서 미리 입력할 때, 동일한 학생의 학번을 입력 받지 않음으로써 이 오류를 미리 막을 수 있습니다.
세 번째, 데이터의 삭제에 대해서입니다.
이 프로그램에서 노드의 삭제하기 위해 학생의 정보가 필요 한데 그때 사용되는 것은 학번입니다. 하지만.. 여기서 또한 문제점이 있습니다. 만약 사용자 실수로 삭제 하고자 하는 학생의 학번을 오타로 인하여 리스트에 존재 하지 않는 학번이 입력되었을 시 학번을 찾을 수 없다고 알려줘야 사용자도 잘못 입력했음을 쉽게 알 수 있을 겁니다. 만약 100명이 넘는 학생의 정보들 중에서 잘못 입력으로 삭제하고자 하는 학생을 삭제 못하고 존재하지 않는 학생의 학번을 입력했으면, 프로그램은 학생의 정보를 삭제하지 못했음에도 불구하고 그냥 다음으로 넘어 갈 것입니다. 그렇게 되면 아주 사소한 것이라도 문제가 발생될 수 있기 때문에 바로 바로 사용자에게 알려 줘야 할것입니다. 그 문제를 해결하기 위해 아래와 같이 메소드를 수정 하였습니다.
public LinkNode deleteNode(int hak){
LinkNode current = Head.getNodeFirst();
LinkNode previous=null;
int count=1;
while(current!= null && hak!=current.getData()){
previous=current;
current=current.getNodeNext();
if(current.getData()!=hak && current.getNodeNext()==null){
System.out.println("입력한 "+hak+"학번에 해당하는 학생이 없어서 삭제할수 없습니다.");
break;
}
count++;
}
if(current.getData() == hak && previous!=null && current!=null){
previous.setNodeNext(current.getNodeNext());
System.out.println("입력한 "+count+"번째 있던 "+hak+"학번의 학생정보가 삭제 되었습니다.");
}
else {
if(current.getData() == hak && previous==null && current !=null){
Head.setNodeFirst(current.getNodeNext());
System.out.println("입력한 "+count+"번째 있던 "+hak+"학번의 학생정보가 삭제 되었습니다.");
}
}
return current;
}
위의 소스에서 진한색으로 표시한 항목을 추가함에 따라 그 부분을 간단하게 해결하였습니다.
이상으로 작성한 프로그램의 개선한 사항에 대해서 마치겠습니다.

키워드

  • 가격2,000
  • 페이지수13페이지
  • 등록일2007.06.22
  • 저작시기2007.4
  • 파일형식한글(hwp)
  • 자료번호#416354
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니