-
[게임알고리즘] 4-1강 링크리스트[DSU] 게임알고리즘 2026. 3. 27. 20:07728x90
마지막 노트를 가르키는 링크리스트 Tail 방식을 지난 3강에서 진행함.
이번 4강에서는 Head 방식을 만들어보고, 어떤 차이가 있는지 확인.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117#include <stdio.h>#include <string.h>struct Node{void* data;Node* next; //Node* prev;};Node* first = NULL;void addNode(void* data){Node* n = new Node;n->data = data;n->next = NULL;#if 0// 직관적이지만, 효율적이진 않음. 37 line 중복실행if( first==NULL ){first = n;return;}#endiffor(Node* p = first; p;){Node* bk = p;p = p->next;if( p==NULL ){bk->next = n;return;// 실행완료1}}// 실행완료2first = n;}void addNode(int index, void* data){// do something}void delNode(int index){int i=0;for(Node* p = first, * bk = NULL;p; bk = p, p = p->next, i++){if( i==index ){if( bk==NULL )// i==0first = p->next;elsebk->next = p->next;delete p;return;}}}void delNode(void* data){// do something}void delAllNode(){for(Node* p = first; p; ){Node* bk = p->next;delete p;p = bk;}first = NULL;}void* atNode(int index){int i=0;for(Node* p = first; p; p=p->next, i++){if( i==index )return p->data;}return NULL;}void printNode(){for(Node* p = first; p; p=p->next){printf("%s\n", (char*)p->data);}}int main() {const char* str[] = { "Hello", "World", "!!!", "DSU" };int num = sizeof(str) / sizeof(const char*);for(int i=0; i<num; i++){const char* t = str[i];int len = strlen(t);char* s = new char[len + 1];strcpy(s, t);addNode(s);}delNode(0);//delNode(1);//delNode(3);printNode();return 0;}cs 
매일매일 열심히 게임개발하고 있습니다 '[DSU] 게임알고리즘' 카테고리의 다른 글
[게임알고리즘] 4-3강 링크리스트 실습 예제 (0) 2026.03.27 [게임알고리즘] 4-2강 링크 리스트 (0) 2026.03.27 [게임알고리즘] 3-3강 링크 리스트 (0) 2026.03.22 [게임알고리즘] 3-2강 링크 리스트 (0) 2026.03.22 [게임알고리즘] 3-1강 링크 리스트 (0) 2026.03.22

