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

C/C++ Q/A
[5294] Re:링크리스트 주석 부탁드려요
D.C [darkcain] 1467 읽음    2005-09-11 19:31
/*
포인터 문
주절주절
주절주절
주절주절
*/

형식으로 글 중간에 써 놓았습니다.


사랑으로 님이 쓰신 글 :
: struct film {
:     char title[45];
:     int rating;
:     struct film * next; 
: };
:
: int main(void)
: {
:     struct film * head = NULL;
:     struct film * prev, * current, * rear; <---선언해놓고 어디서 사용했는지도 구분이 않됩니다

:     char input[45];
:
:     puts("첫 번째 영화 타이틀을 입력하시오:");
:     while (gets(input) != NULL && input[0] != '\0')
:     {
:         current = (struct film *) malloc(sizeof(struct film));
:         if (head == NULL)       /* 첫 번째 구조체 */
:             head = current;
:         else                    /* 연결된 구조체들 */
:             prev->next = current;
/*
prev->next = current; 
if에선 처음 while이 돌 때, head를 채웁니다.
그리고 else에선 head부터 시작해서 차근 차근,
next라는 포인터를 이용해서 구조체들을 연결하죠.
*/
:         current->next = NULL; 
/*
current->next = NULL;
단 하나의 자료만 저장할 때를 예상해서
구조체 내의 next포인터를 잠굽니다.
나중에 연결하는 동작은 위의 prev->next = current;에서 하죠.
*/
:         strcpy(current->title, input);
:         puts("평가를 입력하시오(0점에서 10점까지):");
:         scanf("%d", current->rating);
:         while(getchar() != '\n')
:             continue;
:         puts("다음 영화 타이틀을 입력하시오(끝내려면 빈 라인):");
:         prev = current;
/*
prev = current;
저 위의 else 문을 위해, 비어있는 포인터를 채웁니다.
prev->next를 사용하기 위해서 임의의 구조체로 채우는 것이죠.
*/ 
:     }
:
: /*  목록 보여  */
:     if (head == NULL)
:         printf("입력된 데이터가 없습니다.\n");
:     else
:         printf("영화들의 목록은 다음과 같습니다.\n");
:     current = head;
:     while (current != NULL)
:     {
:         printf("영화: %s  평가: %d\n", current->title, current->rating);
:         current = current->next;
/*
current = current->next;
간단한 문장입니다.
현재 current가 가리키고 있는 구조체를 예를 위해서 struct1 이라고 하고,
current내의 포인터 next가 가리키고 있는 구조체가 struct2라고 합시다.
그렇게 하면 위의 말은 즉 struct1= struct2 라는 문장으로 대체 할 수 있겠죠?
연결되어 있는 다음 구조체를 선택하는 문장입니다.
*/
:     }
:
/*
이제 처음에 입력 받고, 출력까지 했으니, malloc를 이용해서 힙 영역에 잡은 메모리를 해제해 주어야 겠죠?
*/
:     current = head;               //첫번째 구조체(head) 를 current로 넣습니다.
:     while (current != NULL)   //current가 텅 빌때까지...메모리를 전부 해제할 때까지...
:     {
:         rear = current->next;  //rear = current++
:         free(current);              // 메모리 해제
:         current = rear;            // . . .
:     }
:     printf("끝\n");
:     return 0;
: }
:
: 자세한 주석좀 달아주세요....뭐가 뭔지 도무지 이해가 않됩니다.

+ -

관련 글 리스트
5287 링크리스트 주석 부탁드려요 사랑으로 1631 2005/09/08
5294     Re:링크리스트 주석 부탁드려요 D.C 1467 2005/09/11
5306         답변 감사드립니다 사랑으로 1383 2005/09/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.