본문 바로가기

Linked List

(5)
linked list 사용 예 #include "linux/list.h" typedef struct { struct list_head ListHead; fs_enum_data_type data_info; U16 ino; U16 index; } DirInfo_List; struct list_head g_DirListHead; DirInfo_List *gp_CurrentDirList; S32 DirListInsert(DirInfo_List *dir_list ) { struct list_head *tmp; int i = 0; if (!dir_list->index) { list_add_tail(&dir_list->ListHead, &g_DirListHead); return 0; } else { list_for_each(tmp, &g_DirL..
연결 리스트 (Linked list) 연결 리스트 17.1 내장된 참조(Embedded references) 우리는 다른 객체를 참조하는 속성들의 예를 본 바 있습니다. 이것을 내장된 참조(embedded references)라고 부릅니다 (Section 12.8 참조). 일반적인 데이타 구조인 연결 리스트(linked list)가 이 특징을 이용합니다. 연결 리스트는 노드(nodes)로 구성되는데, 각 노드는 리스트에서 다음 노드에 대한 참조점을 포함합니다. 게다가, 각 노드는 카르고(cargo)라고 부르는 한 단위의 데이타를 포함합니다. 연결 리스트는 재귀적인 정의를 가지기 때문에 재귀 데이타 구조(recursive data structure)로 간주됩니다. 연결 리스트는 다음과 같이: None으로 표현되는, 비어있는 리스트이거나, 카르..
Double Linked-list (이중 연결 리스트) * 이중 연결 리스트 • list_head라는 자료 구조를 이용하여 구현 • list_head는 전체 자료 구조가 아닌 list_head 필드의 주소를 저장 • LIST_HEAD(list_name) : 리스트를 새로 만듬 • list_add(n,p) : p가 가리키는 요소 다음에 n을 가리키는 요소 삽입 • list_add_tail(n,h) : 첫번째 요소의 주소인 h로 지정한 리스트의 맨 끝에 n이 가리키는 요소 삽입 • list_del(p) : p가 가리키는 요소 삭제 • list_empty(p) : 첫번째 요소의 주소로 지정한 리스트가 비어 있는지 검사 • list_entry(p, t, f) : 이름이 f고 주소가 p인 list_head 필드를 포함한 t타입 자료 구조의 주소 반환 • list_fo..
list_head를 사용하는 이유 리눅스 커널 Q&A 게시판 펌 (http://linux.flyduck.com/cgi-bin/webboard/wwwboard.cgi?db=lkqna&mode=read&num=1587&page=9&ftype=6&fval=&backdepth=1) >옛날 커널에서는 prev , next를 사용했었는데 >요즘에는 list_head 를 사용하는것같습니다. >list_head를 사용하는 이유는 무엇인지 궁금합니다. >prev,next를 쓰는것이 더 직관적이지 않을까요? 2.4 커널에서부터 linked list 구현이 아주 일반화되어서 쉽게 linked list를 만들 수 있는데, list_head는 이 linked list head를 정의하는 자료구조라고 이해하면 될 것 같습니다. list_head만 있으면 link..
Linux linked list 리눅스 커널에서 쓰는 linked list 의 해더 파일이다. 범용으로 쓰기위해 양방향 연결리스트로 선언했고. 더미로 연리스리스트 head 를 선언하였다. 연결리스트 add 를 하다보면 header와 함께 환영 양방향 연결리스트로 구성이되고 prev , next 로 접근함에 따라 stack 방식/ que 방식의 메모리 접근가능. for루프로 한쪽방향으로 계속 따라 들어가서 접근방식. malloc으로 메모리 할당은 안했으므로.. 단순 stack 메모리에 잡힐수도, malloc으로 사용자 메모리에 쓸수도 있는것이다.? del 로 링크리스트 끊는 역할만 하므로 메모리는 약간의 낭비가 있을듯하다.? list_entry 역할.. list 연결리스트의 주소만 갖고 해당 스트럭쳐의 주소를 반환받을수있다. (어느 형태..