디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

와 연결리스트 완성 헤헤

어슐러르귄갤로그로 이동합니다. 2011.03.23 01:03:48
조회 310 추천 0 댓글 3


//*************************************//
//
//     C로 만든 연결리스트   
//
//              만든이 :
//              만든 날짜 : 2011.03.22
//
// 연결리스트가 해야 할 일
//  1. linked list에 insert
//  2. linked list에 delete
//  3. linked list를 print
//*************************************//

#include <stdio.h>
#include <stdlib.h>

// 자료 객체 하나
struct node {
 // 다음의 구조체 노드를 가리키는 포인터
 node* next;
 // 노드의 실질적인 데이터
 int data;
};

// 노들들이 저장될 구조체
struct nodeList {
 // 총 목록개수
 int count;
 // 맨 앞 노드를 가리키는 헤드 포인터
 node* head;
};

int insert_node(nodeList*, const int, const int);
int delete_node(nodeList*, const int);
void list_print(nodeList* const);

int main() {
 // 노드리스트를 하나 만들고 초기화한다.
 // 처음엔 아무것도 들어있지 않다.
 nodeList list = { 0, NULL };

 insert_node( &list, 10, 0 );
 insert_node( &list, 20, 1 );
 insert_node( &list, 30, 2 );
 insert_node( &list, 40, 3 );
 insert_node( &list, 50, 4 );
 insert_node( &list, 60, 5 );
 insert_node( &list, 70, 6 );
 delete_node( &list, 6);
 list_print( &list );

 return 0;
}

// list에 있는 data의 값을 index와 함께 print한다.
//  list의 내용이 변하면 안되기에 const로 선언하였다.
void list_print(nodeList* const list) {
 node* order = list->head;

 if( list->count )
  for(int i = 0; order != NULL; i++) {
   printf("index : %d // data : %d \\n", i, order->data);
   order = order->next;
  }
 else printf("아무 노드도 없습니다.\\n");
 printf("현재 노드의 개수 : %d \\n", list->count);
}

// 값이 data인 새 노드를 index(location)에 추가한다.
//  location과 data의 값은 바뀌면 안되기에 const로 선언하였다.
int insert_node(nodeList* list, const int data, const int location) {
 node* temp;
 node* newNode;
 int index = location;

 // 어떤 노드도 없으면 ( count = 0 이면 )
 if( !(list->count) ) {
  // 새 노드를 할당한다. 새 노드는 곧 제일 처음의 노드이므로 head에 할당한다.
  list->head = (node *) malloc(sizeof(node));
  // 노드의 데이터의 값을 넣어준다.
  list->head->data = data;
  // 다음 노드(두번쨰 노드)를 가리키는 포인터값을 널값으로 설정한다.
  list->head->next = NULL;
  printf("노드가 아무것도 없으므로 노드를 새로 만듭니다.\\n");
 } else { // 노드가 있다면
  // 노드 검색을 위하여 newNode가 가리키는 위치를 제일 앞 노드로 한다.
  newNode = list->head;

  // location의 값이 마지막이거나 마지막을 넘을경우 맨 마지막에 노드를 넣는다.
  if( location >= list->count ) {
   index = list->count;
   printf("추가할 노드의 위치가 끝이거나 끝을 넘어서서 마지막에 추가합니다.\\n");
  }
  // newNode를 새 노드가 삽일될 위치로 옮긴다.
  for( int i = 1; i < index; i++ ) newNode = newNode->next; // 새 노드가 삽일될 위치까지 반복한다.
   // 임시로 현재 가리키고 있는 노드의 주소를 저장한다.
   temp = newNode->next;
   // 추가할 새 노드를 할당한다.
   newNode->next = (node *) malloc( sizeof(node) );
   // 새 노드에 데이터의 값을 넣는다.
   newNode->next->data = data;
   // 새 노드의 다음 노드를 지정한다.
   newNode->next->next = temp;
 }
 
 // list에 연결된 노드의 개수를 증가시킨다.
 list->count++;

 return 0;
}

// index 번째에 있는 노드를 삭제한다.
//  index값은 바뀌면 안되기에 const로 선언하였다.
int delete_node(nodeList* list, const int index) {
 node* temp;
 node* nPtr; // 다음 노드를 가리킬 노드 포인터
 
 // 삭제할 노드의 위치가 노드의 개수와 같거나 넘어선다면 함수를 종료한다.
 //  index > count -1 가 index >= count 이 된다.
 if( index >= list->count ) return 1;

 temp = list->head;
 // index의 값이 0이 아니라면
 if( index ) {
  // 해당 노드의 바로 전 위치로 간다.
  for( int i = 1; i < index; i++) temp = temp->next;

  nPtr = temp->next->next;
  free(temp->next);
  temp->next = nPtr;
 } else { // index의 값이 0이면
  // head가 다음 노드의 값을 가리키게한다.
  list->head = list->head->next;
  free(temp);
 }

 

 list->count--;

 return 0;
}


빈틈은 있지만 오늘은 여기까징~~
내일은 C++로 만들어야징~!~ 헤헤

횽님들 잘자여

추천 비추천

0

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 직원으로 채용하고 싶은 '일머리' 있는 것 같은 스타는? 운영자 24/08/19 - -
공지 프로그래밍 갤러리 이용 안내 [71] 운영자 20.09.28 37336 62
2742708 개발자 때려칠까 한 몇달동안 생각하다가 진짜 때려치고 다른데로 취업했다 ㅇㅇ(112.150) 19:43 1 0
2742707 사내 ERP 개발자 존나 좋아보이더라 ㅇㅇ(59.16) 19:43 1 0
2742706 나씻주준✨ ♥냥덩Pay♥갤로그로 이동합니다. 19:42 1 0
2742705 인프런에서 사이드 프로젝트 같이 할 사람 구하는데 [1] 프갤러(122.44) 19:40 7 0
2742704 뭔 웹이 돈을 젤 잘벌어 ㅋㅋ 프갤러(118.235) 19:40 9 0
2742702 대부분 모르는 신기한 몇가지 사실 ㅇㅇㅇㅇ(222.105) 19:34 14 0
2742701 사업할 때 직접 웹사이트 만들줄 알면 좋은듯 [2] ㅇㅇ(118.235) 19:31 19 1
2742699 + 인공지능 시대 영어 공부가 필요할까요? [1] qu(121.171) 19:29 7 0
2742698 야 개발자 때려치고 고시원 오토 돌리는거 어떻냐?! [1] 포항의봄갤로그로 이동합니다. 19:27 18 0
2742695 나느은 내가 겪는 고통의 원인을 찾았다 ㅇㅅㅇㅋ [2] 나트륨찡갤로그로 이동합니다. 19:20 21 0
2742692 저녘 ㅇㅅㅇ [1] 류류(125.244) 19:12 20 2
2742691 나 국비인데 프갤러(175.223) 19:11 14 0
2742690 슬픔에 대해 생각하지 말기 [1] 주아갤로그로 이동합니다. 19:10 14 0
2742688 소아성애 인생이 1티어 인생임 ㅇㅅㅇ 류류(125.244) 19:09 11 1
2742687 나느은 나뜨아륨이당 [1] 나트륨찡갤로그로 이동합니다. 19:09 12 0
2742686 파이어족 개발자 수익.jpg [4] 노력갤로그로 이동합니다. 19:08 111 45
2742684 나다 질문받느다 [1] 피에로가르뎅갤로그로 이동합니다. 19:03 17 0
2742683 10년차 백엔드 무물 프갤러(117.111) 19:03 18 0
2742682 슬픔이란 소나기 같은 것 [2] 주아갤로그로 이동합니다. 19:02 15 0
2742681 민주당에 지갑 열던 할리우드 스타들, 왜 이렇게 조용할까 발명도둑잡기갤로그로 이동합니다. 19:02 7 0
2742679 test2 [4] 나트륨찡갤로그로 이동합니다. 19:00 30 0
2742678 스펙없고 실력없으면 막장 SI회사가서 프갤러(211.44) 18:59 20 0
2742677 나님은 앞으로다가 과학 기술 연구할꺼야 뎃 ⁰^⁰ 나트륨찡갤로그로 이동합니다. 18:59 12 0
2742676 대부분 모르는 신기한 몇가지 사실 [2] ㅇㅇㅇㅇ(222.105) 18:58 20 0
2742675 '쥬라기공원' 제프 골드블룸 "저소득 배우 많아...대부분 생활비도 빠듯 발명도둑잡기갤로그로 이동합니다. 18:58 9 0
2742673 test 나트륨찡갤로그로 이동합니다. 18:55 18 0
2742672 test ㅇㅇ(60.253) 18:53 18 0
2742665 대부분 모르는 신기한 몇가지 사실 ㅇㅇㅇㅇ(222.105) 18:23 33 0
2742664 원래 하청기업은 기술력만 빼먹고 이직용임 ♥냥덩Pay♥갤로그로 이동합니다. 18:17 28 0
2742663 원래 수능 공부하면 마음이 공허함..? [2] 김도연24갤로그로 이동합니다. 18:15 30 0
2742662 “이 안에 너 있다…무려 22%나” 부부는 닮아가는 게 아니라 원래 닮았 발명도둑잡기갤로그로 이동합니다. 18:13 15 0
2742661 20살 직업 고민 평가좀 진지함 [19] 프갤러(211.234) 18:12 72 1
2742660 박정희 지시로 특허권 포기한 '홀치기' 발명가‥법원 "유족에 7억 배상" 발명도둑잡기갤로그로 이동합니다. 18:10 11 0
2742659 ‘디지털 피난처’로 살찌운 텔레그램, 성착취 ‘디지털 온상’이 되다 발명도둑잡기갤로그로 이동합니다. 18:06 13 0
2742658 너님 달린다 이마트 도리스아 skt(223.33) 18:05 10 0
2742657 한국에서 자바 스프링에 대한 이해가 제일 깊은 사람은 [1] 프갤러(1.232) 18:02 40 1
2742656 선생님들 백준 자바로 하려는데 뭐선택해야해요ㅕ? ㅇㅇ(125.184) 17:52 15 0
2742655 데이터분석(데이터분석가, 퍼포먼스마케팅) vs it엔지니어 ㅇㅇ(1.248) 17:51 15 0
2742653 일본 단독주택 거주 59% 한국 14.3% [1] ㅇㅇ(123.108) 17:42 22 0
2742650 한국은 공공기관에서 왜 윈도우 쓰냐? 돈 아깝게 [18] 프갤러(59.8) 17:36 83 0
2742647 중고판매 가능? ㅇㅇ(118.32) 17:28 24 0
2742645 c++ 비주얼스튜디오,비주얼스튜디오 코드 중 뭘 쓸까요 [4] ㅇㅇ갤로그로 이동합니다. 17:23 31 0
2742642 [자저직강] 자바의 정석 ㅡ 1강 코딩낭인(58.236) 17:14 20 0
2742639 33 짐나님짐 도리스아(112.170) 17:11 16 0
2742638 금일 프비지원을 마칩니다. 코딩낭인(58.236) 17:10 10 0
2742636 에디터에 링크넣으면 미리보기 뜨는거 헬마스터갤로그로 이동합니다. 17:05 13 0
2742635 시발 레드블랙트리 구현해보려했는데 450줄이 되네 [6] 프갤러(218.148) 17:05 46 0
2742634 와 국비 하나도 이해 안감 [7] ㅇㅇㅇ(1.237) 17:04 72 0
2742632 미래의 어느 역사학자들의 대화라는데 (요약편) 프갤러(211.241) 17:01 16 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2