linked list 관련 질문2입니다
진주
질문 제목 : linked list코드분석에 관해서 질문드립니다. 질문 요약 :주석부분을 해석한건데 맞는지 좀 봐주시면 감사하겠습니다.질문 내용 : 주석부분 참조 부탁드립니다.
void Init_Card()
{
Head = (Card*)malloc(sizeof(Card));
Tail = (Card*)malloc(sizeof(Card));
(*Head).link = Tail;
(*Tail).link = Tail;
}
//(head data || link) -- (Tail data || link) -- (Tail data)
위의 함수는 메인문이 시작되면 한번은 실행하는 함수입니다.
메인문이 실행되면 주석과 같은 형태로 노드가 생성이 된다는 가정하에..
아래의 함수를 실행하면...
Card* Insert_Card(void)
{
Card* pSc; //pointer struct card
pSc = (Card* )malloc(sizeof(Card));
clrscr();
printf(차례대로 입력해주세요.\n);
printf(♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥\n);
printf(카드번호 : );
fgets((*pSc).CardNum, 5, stdin);
printf(\n이름 : );
fgets((*pSc).Name, 10, stdin);
printf(\n학교(회사) : );
fgets((*pSc).School, 15, stdin);
printf(\n전화번호 : );
fgets((*pSc).Tel, 15, stdin);
printf(\nE-mail : );
fgets((*pSc).Email, 20, stdin);
printf(♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥\n);
(*pSc).link = (*Head).link;
(*Head).link = pSc;
return pSc;
//(Head data || link)--(pSc data || link)
}
=================================================================================================================
(*pSc).link = (*Head).link;
(*Head).link = pSc;
return pSc;
위의 3줄의 코드와 위의 함수의 관계를 이해를 못하겠습니다.
//(head data || link) -- (Tail data || link) -- (Tail data) 이런 상태에서
(pSc data || link) 다음과 같은 노드가 하나가 추가되면,
(pSc data || link) (head data || link)(Tail data) 다음 3개의 노트가 어떤 형태로 연결이 되는지 이해가 안됩니다 ㅠㅠ
제 생각에는 (head data || link) -- (pSc data || link) 이렇게 되는거 같은데...
시작 노드에 삽입된 노드를 복사해버리는게 아닌가 싶습니다..
그리고 구조체 포인터변수는 왜 리턴을 하는 걸까요...
삽입함수를2~3번 실행하면 어떤식으로 연결리스트가 형성되는지를 모르겠습니다.