게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
이중연결리스트는 나에게 무슨 원한이 있나요...
게시물ID : computer_84459짧은주소 복사하기
작성자 : 등교의고통
추천 : 0
조회수 : 361회
댓글수 : 1개
등록시간 : 2013/04/14 12:39:55

Alg createSet(n) 

 input input integer n

  output set

1. i 0

2. S an empty set // 헤더와 트레일러 노드 생성

3. MIN 0

4. MAX 50,000
5. while (
i < n) // memberinsertElem의 이중작업이 아닌 단일작업으로 할경우 가산점수

           x a random number between MIN and MAX

           if (!member(x, S)) //member함수의 경우 헤더존재를 유의

                 insertElem(x, S)   //정렬 위치에 삽입할 것

                 i i + 1

6. return S

 Alg member(x, S)

  input set A, element e

  output boolean

1. if (S.isEmpty()) // S->next->elem ==NULL

  return 0;

2. p S.first() // S->next

3. while(True)
  a
S.element(p) //p->elem ( 함수 구현 X )

  if (a<e)

      if(S.isLast(p))  //p->next == NULL

  return 0;

      else

  pS.after(p) //p = p->next

 

 

 양방향 연결리스트 insertElem(x, S)함수 팁

1. 매개변수로 들어온 노드포인터를 포함하여 총 3개의 포인터 필요

    삽입할 노드위치를 찾는 포인터1 (매개변수로 들어온 노드포인터S를 이용)

     포인터1의 다음 노드를 참조 할 포인터2 (선언만 하고 나중에 초기화)

     삽입할 새로운노드를 참조 할 포인터3 (동적할당받아 새로운노드 생성 elemx로 초기화)

2. 무한반복문을 통하여 포인터1을 계속 다음노드를 가르키게.

    반복문내에 포인터1의 다음노드 elemnull이거나(트레일러) x보다 크거나 같을경우 break

3. 포인터2를 포인터1의 다음노드로 초기화

4. 포인터3의 새로운 노드를 포인터1의 노드와 포인터2의 노드 사이에 삽입( 양방향 연결리스트에 맞게 연결을 갱신하는 작업)

 

//솔직히 말해서 이게 무슨 소린지 거의 이해가 안가요....의사코드란게 일반인도 알아볼수있게 한게 의사코드 라는데 전 일반인보다 못한가봐요,,ㅡ,.ㅡ 대체적으로 궁금한게 헤드와 트레일러는 선언해서 대체 어디다 쓰는가와 동적배열은 삽입함수에서만 쓰는건가 궁금합니다. 그리고 S가 새로삽입할 노드인게 아닌건가요? 삽입함수에서 선언하는 노드 포인터들은 대체 정체가 뭐죠......오후5시까지 제출이라 부끄러움을 무릅쓰고 질문해 봅니다.

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호