본문 바로가기

Study

자료구조 연결 리스트 예제


요염


안녕하세요. 꼬로미입니당


자료구조의 리스트, 연결리스트를 포스팅합니다





리스트(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);

}





실행화면





멍2


읽어주셔서 감사드립니다


밑의 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