안녕하세요. 꼬로미입니당
자료구조의 리스트, 연결리스트를 포스팅합니다
리스트(list)
순서를 가진 항목들의 모임
ex) 요일, 한글자음 등
리스트의 연산
- 새로운 항목을 리스트의 끝, 처음, 중간에 추가
- 기존의 항목을 리스트의 임의의 위치에서 삭제
- 모든 항목을 삭제
- 기존의 항목을 대치
- 리스트가 특정한 항목을 가지고 있는지를 살핌
- 리스트의 특정위치의 항목 반환
- 리스트안의 항목의 개수를 셈
- 리스트가 비었는지, 찼는지 체크
- 리스트안의 모든 항목을 표시
- 구현이 간단
- 삽입, 삭제에서 오버헤드
- 항목의 개수 제한
- 구현이 복잡
- 삽입, 삭제가 효율적
- 크기가 제한되지 않음
연결리스트(linked-list) 이용 예제
#include<stdio.h> #include<stdlib.h> typedef struct Node{ int data; struct Node *link; }Node; void view_node(Node *target){ if(target==NULL){ printf("Empty node!!!\n\n"); return; } printf("Start--->"); while(target->link!=NULL){ printf("%d--->",target->data); target = target->link; } printf("%d--->END.\n\n",target->data); } Node* create_node(){ Node *n; n= (Node*)malloc(sizeof(Node)); if(n==NULL){ printf("Error!!! not enough memory... \n"); exit(1); } n->link=NULL; return n; } void insert_node(Node **head, Node *prev, Node *new){ if( (*head)==NULL) *head=new; else if (prev==NULL){ new->link=*head; *head=new; } else{ new->link=prev->link; prev->link = new; } } void main(){ Node *head, *prev, *new; head=prev=NULL; view_node(head); new = create_node(); new->data = 10; insert_node(&head, NULL, new); prev=new; //view_node(head); new = create_node(); new->data=20; insert_node(&head, prev, new); prev=new; view_node(head); new = create_node(); new->data=30; insert_node(&head, NULL, new);
view_node(head); new = create_node(); new->data=40; insert_node(&head, prev, new); prev=new; view_node(head); new = create_node(); new->data=70; insert_node(&head, prev, new); prev = new; view_node(head); new = create_node(); new->data=9; insert_node(&head, NULL, new); prev = new; view_node(head); } |
실행화면
읽어주셔서 감사드립니다
밑의 UP 클릭 한번씩 부탁드려요!ㅎㅎ
'Study' 카테고리의 다른 글
자료구조 배열을 이용한 스택 구현 (0) | 2014.05.15 |
---|---|
CCNA 4-2 WAN - 2 (0) | 2014.05.14 |
CCNA 4 Hierarchical Network Design (계층 네트워크 설계) (0) | 2014.05.12 |
CCNA 무선의 기본 개념과 설정 (0) | 2014.05.11 |
CCNA 4-2 WAN - 1 (0) | 2014.05.10 |