링크드 리스트 자기참조 구조체
핫핑크
질문 제목 :
링크드 리스트, 자기참조 구조체
Linked like로 데이터를 입력하는 프로그램입니다.
질문은 주석을 참고하시면 됩니다.
그리고 linked list에 대한 설명이 자세히 나온 책이 있으면 추천해 주세요.
질문 내용 :
#includestdio.h
typedef struct record
{
char name[20];
int birth;
struct record* next; //구조체 포인터
} *LINK;
//typedef struct record의 데이터 타입을 포인터로 한 이유는 무엇입니까?
void list_record();
LINK start; //전역변수
void list_record()
{
LINK current; //지역변수
/*LINK start, LINK current 이렇게 전역과 지역변수를
각각 선언하는 이유는 무엇입니까? */
printf(\nstart=0x%5x\n,start);
for(current=start; current; current=current-next)
/*1.for문 초기식에서 current와 start를 대입하는 이유?
2.조건식이 current인 이유?
3.증감식이 current=current-next인 이유? */
printf(0x%5x %-20s 0x%5x\n, current,current-name,current-next);
}
-
청력
네! 답변 감사합니다. ^_^
-
치에미
보통 끝에있는 노드에는 NULL이라는 값을 세팅(C-next = NULL)되어 있어서 끝으로 인식하게 하는데
current = C이렇게 되어 있으면 current-next 는 NULL이겠죠... 그럼 NULL(값으로는 0)은 조건식에서 거짓이 되어서 조건식을 빠져나오게 됩니다. -
나미
하나 더 물어보겠습니다. for문에서 조건식이 current인데 current 조건을 만족할 때까지 계속 수행한다는 얘긴가요? 그렇다면 current조건식을 만족한다는 건 무얼 말하는 건가요?
-
조심해
자세한 설명 감사합니다. 좋은 하루 보내세요^^
-
갤2
3. for에서 ++, --연산이 필요없구 current=current-next라는 연산식이 다음노드 즉 현재 종이컵에서 연결선(current-next)을 따라서 가면 자동으로 다음 노드에 도착한다 그곳에 현재의 포커스를 위치하는 것임
[ A(start, current)---B----C ] 현재 A에 있다가 current = current-next이 식을 만나면
[ A(start)---B(current)----C ] 이렇게 포이터를 이동하게 됩니다.
-
알찬바로
1. struct record* next; //구조체 포인터
로 하는 이유는 선영 구조체를 만들기 위해서 현재와 다음의 LINK라는 노드를 연결하기 위해서 필요한것 즉 실고리에 종이컵을 여러개 연결할때 처음 종이컵에서 실을 하나 뽑아서 다음 종이컵에 연결할때 이 실처럼 연결을 하는 용도로 쓰이는 것이 위이 구조체 내에 쓰이는 포인터입니다.
2. start는 전역으로 쓰여서 여러개의 종이컵이 연결된 부분의 머리 부분을 표시해둠으로써
항상 start를
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2695166 | do while 문 어떤것이잘못된건지 모르겠어요 (2) | 아이폰 | 2025-05-18 |
2695122 | 구조체에 대해 물어보고 싶은게 있습니다 ^^^.. (7) | 수련 | 2025-05-17 |
2695091 | txt 파일 입출력 후 2차 배열에 저장하기입니다. (3) | 헛장사 | 2025-05-17 |
2695063 | 수도요금 프로그램좀 짜주세요. | 시내 | 2025-05-17 |
2695033 | 답변좀요ㅠㅠ (1) | 비사벌 | 2025-05-16 |
2695010 | C++의 STL은 왜 굳이 템플릿화 시켜서 라이브러리를 만드나요? (초보수준의 질문..) (2) | 엘보어 | 2025-05-16 |
2694958 | 로직이 변한다는 것에 대해서 궁금합니다. | 튼동 | 2025-05-16 |
2694929 | 열혈강의 25-2 두번째 문제 질문 | 지우개 | 2025-05-15 |
2694900 | dequeue 에서 리턴값 프린트 방법알려주세요 오늘 12시까지 대화방에 있습니다 도와주세요 | 미투리 | 2025-05-15 |
2694854 | 절대값을 구할때 (2) | 그녀는귀여웠다 | 2025-05-15 |
2694827 | 이제 어떻게 공부해야할지 모르겠네요 | 새얀 | 2025-05-14 |
2694778 | 순열 계산요. | 맛조이 | 2025-05-14 |
2694754 | ShowWindow 함수를 이용하려 하는데 질문있습니다. (2) | 파도 | 2025-05-14 |
2694731 | 리눅스 커널의 시작점 질문 | 미르 | 2025-05-13 |
2694702 | 이거 뭐가문제인가요 코드수정좀 (3) | 맑은 | 2025-05-13 |
2694675 | C언어 후위표기를 중위표기로 | 앨런 | 2025-05-13 |
2694646 | 안녕하세요 파일 합치기 함수! (1) | 연블루 | 2025-05-13 |
2694618 | 잘몰라서 설명부탁드립니다. scanf 관련 (3) | 파라 | 2025-05-12 |
2694590 | 이 코드가 뭐하는 코드일까요? #2 | 빵순 | 2025-05-12 |
2694559 | 동적할당으로 배열(2차원열)을 만드는데 있어 그걸 함수화시키는데... (1) | 늘솔길 | 2025-05-12 |