Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[2114] Re:답변 감사합니다.. 근데 질문이 하나 더 있습니다. 리스트의 탐색에 대하여
조준회 [] 1305 읽음    2003-03-19 20:59
선형 링크드 리스트를 사용하시는가 보군요..

그런데 조금 잘못되어 있군요..

typedef struct list_node {

     int row;
     list_ptr *link;
};

이렇게 포인터가 되어야 하고요..

선형 링크드 리스트이 경우 리스트의 제일 처음을 가리키고 있는 포인터가
하나 있어야 합니다.

다시말하면.. 처음부터 차례로 찾아나가는 수밖에 없습니다.


즉,
    tmp = head;

    while(tmp->row != 30)
    {
        tmp = tmp->link; // 이렇게 하면.. tmp는 다음 노드를 가리키게 됩니다.
        if (tmp == NULL) break;
    }

이게 비효율적인 방법으로 보일지몰라도..
포인터 연산이라 생각보다 시간을 걸리지 않습니다.

만약 더 빠른 탐색이 필요하다면.. Tree등을 사용하여야 합니다.


타즈 님이 쓰신 글 :
: 조준회님의 답변에 진심으로 감사를 드립니다.
:
: 물론 저도 나름대로 노력은 하고 있습니다.
:
: 리스트도 여기에 질문을 올려 놓은 뒤에 열심히 공부하고 있습니다.
:
: 그런데 의문사항이 생겼습니다.
:
: 리스트의 탐색은 어떻게 하는 걸까요?
:
: 예를 들어
: typedef list_node *list_ptr;
:
: typedef struct list_node {
:
:     int row;
:     list_ptr link;
: };
:
: 이런식으로 리스트가 int형 변수 하나만을 가지고 있을 때.
:
: 이 리스트가 10개 또는 그 이상 연결 되어 있다면
:
: row 의 값이 어떤 일정한 값을 갖는 리스트를 찾을려면 어떻게 접근을 해야하는지
:
: 모르겠습니다.
:
: 책에 있는 예제를 아무리 찾아보아도 두 개 정도의 리스트를
:
: 무식한 방법 (예를 들어 : head -> link -> row == 30; 모 이런식으로 밖에 안나옵니다)
:
: 제가 과제를 완성하려면 리스트 탐색 결과에 따라 삽입 또는 삭제를 해야하는데
:
: 탐색하는 방법을 모르겠습니다. 아시는 분 꼭 좀 부탁 드리겠습니다.
:    

+ -

관련 글 리스트
2101 C에서 linked list를 가지고 배열을 표현 하려면 어떻게 해야 하죠? 타즈 1353 2003/03/17
2104     Re:C에서 linked list를 가지고 배열을 표현 하려면 어떻게 해야 하죠? 조준회 1774 2003/03/18
2109         답변 감사합니다.. 근데 질문이 하나 더 있습니다. 리스트의 탐색에 대하여 타즈 1307 2003/03/18
2114             Re:답변 감사합니다.. 근데 질문이 하나 더 있습니다. 리스트의 탐색에 대하여 조준회 1305 2003/03/19
2118                 정말로 감사합니다. 꾸벅 (냉무) 타즈 1273 2003/03/21
2117                 정말로 감사합니다. 꾸벅 (냉무) 타즈 1235 2003/03/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.