본문 바로가기

휴지통/자료구조-C18

연결리스트2 연결의 형태가 한쪽 방향으로 전개되고 시작과 끝이 분명히 존재하는 '단순 연결 리스트'이다. 정렬 기능이 추가된 연결리스트의 ADT정의 기능적으로 무엇인가를 변경하거나 추가하지 않는다면 ADT를 변경할 이유는 없다. 그래서 앞서 배열리스트에 정의한 리스트ADT를 그대로 적용해도된다. 하지만 연결리스트에 정렬 관련 기능을 추가하기 위해서 ADT를 조금확장한다. 정렬 기능이 추가된 리스트 자료구조의 ADT void ListInit(List *plist); -초기화할 리스트의 주소 값을 인자로 전달한다. -리스트 생성 후 제일 먼저 호출되어야 하는 함수이다. void LInsert(List *plist, LData data); -리스트에 데이터를 저장한다. 매개변수 data에 전달된 값을 저장한다. int L.. 2021. 2. 13.
링크드리스트1 연결 기반의 리스트 간단히 연결 리스트라고 불리는 리스트의 구현을 이해하기 위해서는 malloc와 free함수를 기반으로 하는 메모리의 동적할당에 대한 완전한 이해가 되어야 한다. #include int main() { int arr[10]; int readCount =0; int readData; int i; while(1) { printf("자연수 입력 : "); scanf("%d", &readData); if(readDatanext = newNode; tail = newNode; } printf("\n"); //입력 받은 데이터의 출력과정 printf("입력 받은 데이터의 전체 출력\n); if(head ==NULL) { printf("저장된 자연수가 존재하지 않습니다.\n"); } else { c.. 2021. 2. 12.
배열 기반의 리스트(List)2 전의 예제를 토대로 리스트를 구현하자 . LCount는 별도의 설명이 필요없다. //ArrayList.c #include #include "ArrayList.h" //리스트의 초기화 void ListInit(List *plist) { (plist -> numOfData) = 0; //저장된 데이터의 수 (plist -> curPosition) = -1; //참조되는 위치(배열인덱스값) } //데이터의 삽입 void LInsert(List * plist, LData data) { if(plist ->numOfData >= LIST_LEN) //저장된 데이터 수가 배열의 길이를 넘으면 { puts("저장이 불가능합니다."); return; } plist->arr[plist ->numOfData] =data;.. 2021. 2. 9.
배열 기반의 리스트(List)1 컴퓨터공학에서의 추상 자료형(Abstract Data Type) 추상자료형, ADT라고 불리는 이것은 컴퓨터 공학에서 흔히 등장하는 용어이다. 등장하는 영역에 따라서 의미상 약간 차이가 있는 것 처럼 느껴질 수 도 있지만, 실제 의미에서 조금 확장된 개념으로도 사용되기도 한다. 하지만 실제로 차이를 보이는 것은 아니고, 이해가 완전히 되지 않아서 그렇게 느낄 뿐이다. 자료구조에서의 추상 자료형 구체적인 기능의 완성 과정을 언급하지 않고, 순수하게 기능이 무엇인지를 나열한 것 typedef struct _wallet { int coin100Num; //100원짜리 동전수 int bill5000Num; //5000원 짜리 지폐의 수 }Wallet; 이렇게 C언어를 기반으로 구조체를 정의 했다면 구조체를 기반.. 2021. 2. 8.
재귀 함수 재귀는 자료구조와 알고리즘에 있어서 매우 중요한 요소이다. 재귛마수란 함수 내에서 자기 자신을 다시 호출하는 함수를 의미한다. void Recursive(){ printf("Recursive call!\n"); Recursive(); //나 자신을 재호출 } 완료되지 않은 함수를 다시 호출하는 것이 가능하다. Recursive함수가 내부적으로 다시 호출이되면 복사본이 생긴다. 즉 함수가 호출되면 해당 함수의 복사본을 만들어서 실행하는 구조이다. Recursive함수를 실행하는 중간에 다시 Recursive함수가 호출되면, Recursive함수의 복사본을 하나 더 만들어서 복사본을 실행하게 된다. 실제로 함수를 구성하는 명령문은 CPU로 이동이 되어서(복사가 되어서) 실행이 된다. 그런데 이 명령문은 얼마.. 2021. 2. 5.
자료구조와 알고리즘 이해 자료구조 : 데이터의 표현 및 저장방법 선형구조 : 리스트, 스택 큐 비선형구조 : 트리, 그래프 파일구조 : 순차파일, 색인파일, 직접파일 단순구조 : 정수, 실수, 문자, 문자열 알고리즘 : 표현 및 저장된 데이터를 대상으로 하는 문제의 해결 방법 예를 들면 int arr[10] {1, 2, ...}; //초기화되었다고 가정 for(idx= 0; idx 2021. 2. 3.