디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

C++ 링크드 리스트 이해가 잘 안 되는데..

111(39.121) 2023.06.07 23:58:42
조회 131 추천 0 댓글 2


C++ 시작한지 24일 째인 초짜입니다..


링크드 리스트 코드 처음부터 이해가 잘 안가는데


한 줄 한 줄 설명 해주는 


이해하기 쉬운 책이나 강의 있나요..



이해 안 되는 부분 : 처음부터 개념 이해 X

List* CreateList()  < -- List 뒤에 *를 왜 쓰는지..?

Node* head = new Node;  <-- 왜 포인터를 쓰는지?





#include "list.h"

#include "students.h"


// 새로운 링크드 리스트를 만든다.

// 반환값 : 새로운 링크드 리스트의 포인터

List* CreateList()

{

// 헤드 노드를 만들고 초기화한다.

Node* head = new Node;

head->prev = head;

head->next = head;

head->data = 0;



// List 구조체를 만들고 초기화한다.

List* list = new List;

list->head = head;


// List 구조체를 반환한다.

return list;

}


// 리스트를 제거한다. 

// 리스트의 모든 노드와 데이터도 제거한다.

// list : 리스트

// deleteData : true면 노드의 데이터도 제거한다.

void RemoveList(List* list, bool deleteData)

{

// head 노드부터 마지막 노드까지 제거한다.

Node* current = list->head;


do

{

// 현재 노드를 지울 것이므로

// 다음 노드를 구해둔다.

Node* next = current->next;


// 현재 노드와 노드의 데이터를 제거한다.

if (deleteData)

delete (Student*)current->data;

delete current;


// 현재 노드를 갱신한다.

current = next;

}

while( current != list->head); 

// while() 문에 도달한 상태에서

// list->head가 가리키는 곳의 메모리는

// 해제된 상태이지만, list->head처럼

// 그곳의 주소값만 사용하는 것은 상관없다.


// 리스트를 제거한다.

delete list;

}


// 마지막 노드를 구한다.

// list : 리스트

// 반환값 : 리스트의 마지막 노드

Node* GetTail(List* list)

{

// 헤드 노드의 이전 노드를 반환한다.

// (헤드 노드 자기 자신일 수도 있다.)

return list->head->prev;

}


// 새로운 노드를 추가한다.

// node : 이 노드 뒤에 새 노드가 추가된다.

// data : 새 노드의 데이타

void InsertNodeAfter(Node* node, void* data)

{

// 삽입되려는 곳의 앞, 뒤 노드를 구해놓으면

// 읽기 쉬운 소스 코드를 만들 수 있다.

Node* before = node;

Node* after = node->next;


// 새 노드를 만들고 초기화한다.

Node* newNode = new Node;

newNode->data = data;

newNode->next = after;

newNode->prev = before;


// node의 뒤에 있던 노드가 새 노드를 가리키도록 만든다.

after->prev = newNode;


// 매개변수 node가 새 노드를 가리키도록 만든다.

before->next = newNode;

}


// 노드를 제거한다.

// node : 제거할 노드

// deleteData : true면 노드가 가리키는 데이타도 제거한다.

void RemoveNode(Node* node, bool deleteData)

{

// node의 앞, 뒤 노드를 구해놓으면

// 읽기 쉬운 소스 코드를 만들 수 있다.

Node* before = node->prev;

Node* after = node->next;


// node의 이전 노드와 다음 노드를 연결해준다.

before->next = after;

after->prev = before;


// node의 데이타와 node 자신을 제거한다.

if (deleteData)

delete (Student*)node->data;

delete node;

}


// 노드의 다음 노드를 반환한다.

// node : 이 노드의 다음 노드가 반환된다.

// 반환값 : node의 다음 노드

Node* GetNext(Node* node)

{

return node->next;

}


// 노드의 이전 노드를 반환한다.

// node : 이 노드의 이전 노드가 반환된다.

// 반환값 : node의 이전 노드

Node* GetPrev(Node* node)

{

return node->prev;

}


// 노드에 보관된 데이터를 반환한다.

// node : 이 노드의 데이터를 반환한다.

// 반환값 : node에 보관된 데이타

void* GetData(Node* node)

{

return node->data;

}






추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 연인과 헤어지고 뒤끝 작렬할 것 같은 스타는? 운영자 24/04/22 - -
공지 프로그래밍 갤러리 이용 안내 [68] 운영자 20.09.28 34110 62
2685262 채용공고 마감하고 그다음날 다시 올리는 회사는 뭐이므 [3] 프갤러(61.98) 01:29 12 0
2685260 리누스 토르발스 << 이사람 신 아님? [1] 프갤러(211.212) 01:20 14 0
2685257 근데 이력서랑 포폴은 뭐어캐나누냐 프갤러(61.98) 01:12 8 0
2685255 신입 회사 지원 할 때 매출액 같은것도 보면서 지원해야됨 ? [4] 프갤러(112.150) 01:09 21 0
2685253 회사가 병신이면 나도 병신인게 지금 나의 수준 프갤러(118.218) 01:05 10 0
2685252 일본 개발자 취업하려면 실력 어느 정도 되어야 됨? 다칸마리갤로그로 이동합니다. 01:02 12 0
2685250 한동훈, '아들 학폭무마의혹'에 대하여 진짜 '용기'를 내어야! 발명도둑잡기갤로그로 이동합니다. 01:01 6 0
2685248 말도 안되는 일정을 잡으니까 더 무리수 두다가 더 좆망 프갤러(118.218) 00:55 16 0
2685246 일 너무 재미 없다 프갤러(118.218) 00:52 8 0
2685245 일본 취업 유학 워홀 여행 오픈톡 ㅇㅇ(126.208) 00:49 9 0
2685243 소스코드 읽는법 공부는 어캐해? [2] 프갤러(112.187) 00:47 26 0
2685241 오늘의 예능 프로그램 기획 실마리: 연예인과 팬의 가상 연애나 대결 발명도둑잡기갤로그로 이동합니다. 00:43 8 0
2685240 2년전에 개발 10개월 했던거 경력기술서에 쓸까? [14] 프갤러(218.239) 00:39 42 1
2685238 납땜 인두기 받침대 스탠드 에 항문 찔려서 고통받았습니다. 도리스아(112.170) 00:39 11 0
2685237 네이버카페 아이디 추출방법 아시는분? (사례금 3만원 드립니다) [5] 프갤러(211.244) 00:35 30 2
2685233 자살하기 vs 개발해서 풍족하게 먹고 살기 프갤러(106.101) 00:22 13 0
2685231 오늘의 소설, 영화 실마리: 조선민주주의인민공화국 공민들이 인터넷 사용 발명도둑잡기갤로그로 이동합니다. 00:07 14 0
2685230 AI로 인해 대체될 미래를 걱정하는 프로그래머들에게. 프갤러(221.140) 04.24 31 0
2685229 오늘의 소설, 영화 실마리: 연예인 스캔들 파파라치와 엔터테인먼트 회사 발명도둑잡기갤로그로 이동합니다. 04.24 13 0
2685228 마 내 아직도 집에 몬가고있따 [4] 프갤러(147.47) 04.24 39 1
2685227 신용카드 = 무료 코인 API = 무료코인과 같다. [1] 헬마스터갤로그로 이동합니다. 04.24 27 0
2685226 난 신용점수때문에 카드오픈했어요 [2] 멍청한유라ㅋ갤로그로 이동합니다. 04.24 30 0
2685225 연회비 없는 신용카드 괜찮지 않나요? [3] 쇼팬하우어갤로그로 이동합니다. 04.24 23 0
2685224 다가오는 연금지옥 늪에서 [6] 쇼팬하우어갤로그로 이동합니다. 04.24 26 0
2685223 미래의 어느 역사학자들의 대화라는데 [1] 프갤러(211.241) 04.24 18 0
2685222 교육 갔다가 만난 타 직원한테 연락하면 어떠냐? [1] 프갤러(223.39) 04.24 24 0
2685221 퇴근할 시간이당 [1] 프갤러(121.172) 04.24 29 1
2685220 18일날 신용카드 개통 [11] 멍청한유라ㅋ갤로그로 이동합니다. 04.24 54 0
2685219 S3 이미지 수정 질문 드려도 될까요 [11] ㅇㅇ(118.235) 04.24 57 0
2685217 형들 중소가서 몇년 버텨야 경력인정해줌? [6] ㅇㅇ(116.126) 04.24 58 0
2685216 프로그래머스 1렙 거르고 2렙부터 풀기시작하면 됨? [2] 프갤러(180.68) 04.24 38 0
2685215 개발자가 공부한다는건 오해임. 이류나 공부하는 것 [4] 춘절갤로그로 이동합니다. 04.24 70 0
2685214 아 개발다하고왔는데 [4] 멍청한유라ㅋ갤로그로 이동합니다. 04.24 56 0
2685213 님들 컴알못한테 도움좀 [4] 프갤러(221.138) 04.24 26 0
2685212 도대체 왜 개발자가 되고싶은거임?? (전공자 비전공자 필독) [3] ㅇㅇ(211.185) 04.24 71 1
2685211 접속자 폭주! [3] 프갤러(121.172) 04.24 59 1
2685210 국비 프로젝트는 왜 죄다 쇼핑몰이냐 [5] 프갤러(160.237) 04.24 73 1
2685209 1시간 코딩짜고 이건 아닌데- 답변 프갤러(121.172) 04.24 35 1
2685208 연봉협상할때 나 없으면 회사 좆된다고 해도 되냐? [4] ㅇㅇ(223.38) 04.24 42 0
2685207 여자애 생식기 찢는 노조 만들어야 함 ㅇㅅㅇ [2] 류류(121.160) 04.24 27 1
2685206 갓샵 고수만 들어와봐 [4] 춘절갤로그로 이동합니다. 04.24 40 0
2685205 포켓몬 스칼렛 프랑스어 넥도 양반 시작합니다. [2] 도리스아(112.170) 04.24 20 0
2685204 카페 여직원 21살 추정 [13] 프갤러(121.172) 04.24 70 1
2685203 치킨 시킨지 10분정도 지나니깐 좀 진정됐습니다 [4] 헬마스터갤로그로 이동합니다. 04.24 29 0
2685202 본인 네오플에 취업했는데 축하좀 [5] ㅇㅇ(218.48) 04.24 58 0
2685201 자바스크립트 모듈화 하면 유지보수 편함? [1] 프갤러(175.119) 04.24 28 0
2685200 한 회사에만 오래 처박혀있는애들 일단 거리두고 의심해라... [3] 프갤러(112.169) 04.24 59 0
2685199 소프트웨어 특허 및 저작권 [3] 프갤러(121.172) 04.24 49 1
2685198 아이디어, 스타일은 특허나 저작권으로 보호를 못 받습니다 [1] 발명도둑잡기갤로그로 이동합니다. 04.24 22 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2