연결리스트의 종류 - 단순 연결 리스트(singly Linked List) - 원형 연결 리스트(Circular Linked List) - 이중 연결 리스트(Double Linked List) 연결리스트의 특성 비교 - 이전 노드에 대한 접근 연산 단순 연결 리스트 이전노드를 접근할수 있는 방법이 없음 무조건 가장 처음 노드부터 검색해야함 원형 연결 리스트 계속 가다보면 나의 이전 노드의 값을 찾을 수 있다 이중 연결 리스트 이중으로 연결되어 있기 때문에 바로 이전 노드를 접근 할 수 있다 단순 연결 리스트 LinkedList 구조체 헤더 노드의 사용목적 : 구현의 간편함 #ifndef _LINKEDLIST_ #define _LINKEDLIST_ typedef struct ListNodeType{ int..
연결리스트(Linked List)란 ?포인터를 이용하여 자료를 끊김 없이 연결되어 순차적으로 저장되는 것. 배열리스트와의 가장 대표적인 차이점배열리스트는 물리적 위치가 순차적이지만 ,연결리스트는 단순히 논리적 위치만 순차적이고 물리적 위치는 순차적이지 않을 수 있다는 것! 즉, 최대 원소 개수를 지정하는 것에 대한 차이가 있다.배열리스트는 무조건 최대 원소 개수를 지정해야하지만 연결리스트는 지정해줄 필요가 없다. 연결리스트의 구조노드(Node) = 자료 + 링크 연결리스트의 노드 추가와 제거는 링크 정보를 추가하거나 제거하는 것 배열리스트는 원소의 추가와 제거가 원소의 이동을 의미한다.노드 추가하기 노드 추가시 기존에 연결되어있던 링크를 제거하고 새로운 링크를 추가하여 다시 잇는다노드 제거하기 노드 제거..
포인터의 포인터 : 포인터 변수를 가리키는 포인터 변수 int int_value = 100; int *ptr_int = &int_value; int **pptr_int = &ptr_int; 포인터의 포인터는 주소가 저장된 포인트 변수의 주소를 저장하는 변수. 변수 int_value : 100 포인터 변수 ptr_int : c300 포인터 변수 ptr_int가 가리키는 변수의 값 : 100 더블포인터 변수 pptr_int : b200 더블포인터 변수 pptr_int 가 가리키는 주소 : c300 더블 포인터 변수 pptr_int 가 가리키는 주소가 가리키는 값 : 100 - 행과 열의 크기에 따라 동적으로 배열을 생성 int row = 3; int col = 4; int **pptr_int_array = ..
동적 메모리 할당 (Dynamic Memory Allocation) : 프로그램 실행 도중 동적으로 메모리를 할당하는 것 동적 : 할당될 메모리의 크기가 컴파일할 때 미리 정해져 있지 않았다는 의미 - 정적메모리 할당(Static Memory Allocaion) : 프로그램이 실행되기 전에 할당해야 할 메모리의 크기가 미리 정해진 경우 //정적 메모리 할당의 잘못된 예 int size= 100; int int_array[size] = {0,};//오류발생 동적메모리 할당을 위의 소스 처럼 실행하면 오류가 발생한다. 방법 1) 정적메모리 할당 방법 2) 동적 메모리 할당 int int_array[100] = {0, }; int *ptr_int = NULL; int size = 100; .... size =..
포인터 변수 (Pointer Variable) : 메모리주소(Memory Address) 값을 저장하는 변수 int *ptr_int = NULL; 자료형 (a) * 연산자(b) 변수 이름 (c) int * ptr_int - NULL로 초기화 int int_value = 100; int *ptr_int = NULL; ptr_int = &int_value; 포인터 변수에는 int_value의 시작 주소값이 저장된다. 주소를 저장할때에는 "&" 연산자를 사용한다. + 기본적으로 주소를 가르키는 포인터의 크기는 4byte를 이용한다. 포인터 변수의 초기화 방법 1) 변수의 초기화 방법 2) 값 설정 int *ptr_int= &int_value; int *ptr_int = NULL; ptr_int = &int_v..