|
조준회 님이 쓰신 글 :
: 선형 링크드 리스트를 사용하시는가 보군요..
:
: 그런데 조금 잘못되어 있군요..
:
: 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; 모 이런식으로 밖에 안나옵니다)
: :
: : 제가 과제를 완성하려면 리스트 탐색 결과에 따라 삽입 또는 삭제를 해야하는데
: :
: : 탐색하는 방법을 모르겠습니다. 아시는 분 꼭 좀 부탁 드리겠습니다.
: :
|