반응형 프로그래머의 길157 이중 연결 리스트 이중 연결 리스트 단일 연결 리스트(single linked list)와 환형 연결 리스트(circular linked list)는 각 노드에 다음 노드를 가리키는 한 개의 링크 필드만을 사용하기 때문에 특정한 노드를 검색하거나, 삽입 또는 삭제를 할 경우 한 쪽 방향으로만 해당 노드의 위치를 찾을 수 있는 구조이다. 그러나 임의의 노드를 찾을 때 양쪽 방향으로 해당 노드를 검색하면 쉽게 찾을 수 있다. 그러므로 이중 연결 리스트(double linked list)는 노드의 선행 노드를 가리키는 좌링크(LLINK), 자료(DATA)필드, 후행 노드를 가리키는 우링크(RLINK)의 세 개 영역으로 각 노드를 구분하여 양방향으로 특정 노드를 검색할 수 있도록 한 구조이다 이중 연결 리스트 삽입 데이터 항목 .. 2007. 3. 28. 연결 리스트 관련 문자열 포함 프로그램 #include #include #include void print_link(list_pointer); typedef struct list *list_pointer; struct list { char data; list_pointer next; }; list_pointer header1, header2; list_pointer insert_link() { list_pointer head, tail, temp; char ch; ch=getche(); temp=(list_pointer)malloc(sizeof(struct list)); temp->next=NULL; temp->data=ch; head=tail=temp; while( ch!='\r'){ ch=getche(); temp=(list_pointer.. 2007. 3. 28. 연결 리스트 관련 문자열 중복 삭제 프로그램 #include #include #include typedef struct list *linked_list; struct list{ int info; linked_list next; }; void print(linked_list head); linked_list insert(void); linked_list erase(linked_list head); linked_list insert(void) { linked_list head, tail, temp; char c; c=getche(); temp = (linked_list)malloc(sizeof(struct list)); temp->next = NULL; temp->info = c; head = tail = temp; while(c != '\r') { .. 2007. 3. 27. 연결 리스트 ■ 연결 리스트는 왜 쓰느냐? Z A C R A \0 배열을 데이터 삽입과 삭제에 치명적이 약점이 있다! 자 위 ZACRA 라는 Z 앞에 T 라는 문자를 넣으려고 한다고 하면 그냥 생각하면 Z A C R A \0 이 배열의 크기를 늘리고 Z A C R A \0 T 를 넣고 나머지를 뒤로 쭉 밀면 됩니다. T Z A C R A \0 이론상으로는 쉽지만 코드 상으로는 상당히 번거로운 일이다. 데이터의 삭제는 어떤가요? 저기서 C를 삭제한다고 치면 C를 삭제하고 그 뒤의 문자들을 또 앞으로 한 칸씩 당겨야 한다. 말은 쉽지만 코드 상으로는 번거롭고 저런 배열의 구조의 단점이 없는 구조가 연결리스트 이다. ■ 연결리스트의 구조 연결 리스트는 그럼 어떤 구조를 가지고 있는가? Data next → Data nex.. 2007. 3. 27. const의 정확한 이해 const는 변수를 상수로 만든다. 예를들면, const double TAX=0.12 // 수정 불가 하지만, 포인터 변수를 상수화 시키는 것은 특별하다. int a=0; const int *ap = &a; *ap = 20; // 포인터 변수를 상수화 시킬 경우 포인터 자체가 고정되는것이 // 아니라 해당되는 값을 고정시킨다. 즉, 이 문장은 에러다. // 포인터의 값은 변경 가능하다. 2007. 3. 26. 조건부 컴파일 전처리 명령어 조건부 컴파일 지시어(#if, #elif, #else, #ifdef, #ifndef, #endif) 조건부 컴파일 지시어는 지정된 조건에 의하여 프로그램 파일의 특정한 부분을 컴파일하거나 컴파일하지 않게 하는 지시어이다. 조건부 컴파일 지시어의 의미를 알아 보자. 조건부 컴파일 지시어 의 미 #if 조건 #if 다음에 조건이 맞으면 #if와 #endif 사이의 문장들을 컴파일 한다. 조건에 맞지 않으면 #if와 #endif 사이를 컴파일 하지 않고 넘어간다. #elif 조건 #if, #ifdef, #ifndef의 조건에 맞지 않을 경우 또 다른 조건을 검색하기 위한 지시어로 사용된다. #else 조건 #if, #ifdef, #ifndef의 조건에 맞지 않을 경우 #else와 #endif 사이의 문장들을 .. 2007. 3. 26. 이전 1 ··· 15 16 17 18 19 20 21 ··· 27 다음 반응형