03. 연결리스트(Linked List) – 배열 이용 리스트 구현
- 배열(Array)을 이용한 리스트 구현 : S003_ListUsingArray.c
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061#include <stdio.h>#define LIST_LEN 100int list[LIST_LEN];int numOfData = 0;void Insert(data){if(numOfData >= LIST_LEN){printf("저장이 불가능합니다.\n");return;}list[numOfData] = data;numOfData++;}void RemoveIndex(int n){int i;if(n < 0 || n >= numOfData){printf("해당 인덱스에 값이 없습니다.\n");return;}for(i=n; i<numOfData; i++){list[i] = list[i+1];}numOfData--;}void RemoveData(int data){int i;int n = numOfData;for(i=0; i<numOfData; i++){if(list[i] == data){n = i;break;}}for(i=n; i<numOfData; i++){list[i] = list[i+1];}if(n != numOfData){numOfData--;}}void PrintList(){int i;printf("List Count(%d) : ", numOfData);for(i=0; i<numOfData; i++){printf("%d ", list[i]);}printf("\n\n");}void main(int argc, char* argv[]){Insert(15); PrintList();Insert(12); PrintList();Insert(36); PrintList();RemoveData(12); PrintList();RemoveIndex(0); PrintList();} - 위 소스 코드의 15, 12, 36, 1 대신 15.5, 12.3, 36.5, 1로 바꿔서 실행되도록 코드 수정 : T003_ListUsingArrayDouble.c
- S003_ListUsingArray.c 파일을 2개로 분할하기(Dev-C++ IDE 사용)
- 파일 – 새로 만들기 – 프로젝트
- Console Application – C
- 프로젝트명 : S003_ArrayList
- 특정 폴더를 지정후 그 폴더에 저장
- Console Application – C
- S003_ArrayList 마우스 오른쪽 버튼 클릭 – New File
123456789101112131415#ifndef __S003_ARRAY_LIST_H__#define __S003_ARRAY_LIST_H__#include <stdio.h>#define LIST_LEN 100int list[LIST_LEN];int numOfData = 0;void Insert(int data);void RemoveIndex(int n);void RemoveData(int data);void PrintList();#endif- 파일명 : S003_ArrayList.h
- S003_ArrayList 마우스 오른쪽 버튼 클릭 – New File
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include <stdio.h>#include "S003_ArrayList.h"void Insert(int data){if(numOfData >= LIST_LEN){printf("저장이 불가능합니다.\n");return;}list[numOfData] = data;numOfData++;}void RemoveIndex(int n){int i;if(n < 0 || n >= numOfData){printf("해당 인덱스에 값이 없습니다.\n");return;}for(i=n; i<numOfData; i++){list[i] = list[i+1];}numOfData--;}void RemoveData(int data){int i;int n = numOfData;for(i=0; i<numOfData; i++){if(list[i] == data){n = i;break;}}for(i=n; i<numOfData; i++){list[i] = list[i+1];}numOfData--;}void PrintList(){int i;printf("List Count(%d) : ", numOfData);for(i=0; i<numOfData; i++){printf("%d ", list[i]);}printf("\n\n");}- 파일명 : S003_ArrayList.c
- main.c 소스 코드 추가
1234567891011#include <stdio.h>#include <stdlib.h>//#include "S003_ArrayList.h" : ArrayList.c에서도 include 시키기 때문에 중복으로 오류 발생void main(int argc, char* argv[]){Insert(15); PrintList();Insert(12); PrintList();Insert(36); PrintList();RemoveData(12); PrintList();RemoveIndex(0); PrintList();}
- 파일 – 새로 만들기 – 프로젝트