본문 바로가기

분류 전체보기837

배열 기반의 리스트(List)1 컴퓨터공학에서의 추상 자료형(Abstract Data Type) 추상자료형, ADT라고 불리는 이것은 컴퓨터 공학에서 흔히 등장하는 용어이다. 등장하는 영역에 따라서 의미상 약간 차이가 있는 것 처럼 느껴질 수 도 있지만, 실제 의미에서 조금 확장된 개념으로도 사용되기도 한다. 하지만 실제로 차이를 보이는 것은 아니고, 이해가 완전히 되지 않아서 그렇게 느낄 뿐이다. 자료구조에서의 추상 자료형 구체적인 기능의 완성 과정을 언급하지 않고, 순수하게 기능이 무엇인지를 나열한 것 typedef struct _wallet { int coin100Num; //100원짜리 동전수 int bill5000Num; //5000원 짜리 지폐의 수 }Wallet; 이렇게 C언어를 기반으로 구조체를 정의 했다면 구조체를 기반.. 2021. 2. 8.
파일입출력2 int fputc(int c, FILE *stream); //문자 출력 int fgetc(FILE *stream); //문자 입력 int fputs(const char* s, FILE *stream); //문자열 출력 char * fgets(char* s, int n, FILE *stream); //문자열 입력 예전에는 stream부분에 표준 입출력을 의미하는 stdin이나 stdout을 인자로 전달함으로써 키보드와 모니터를 대상으로 입출력을 진행하였는데, 매개변수의형이 의미하듯이 매개변수 stream에 FILE 구조체 포인터를 인자로 전달하여 파일대상의 입출력을 진행할 수 있다. #include int main() { FILE *fp = fopen("simple.txt", "wt"); if(fp==NU.. 2021. 2. 7.
파일 입출력1 파일의 이동 경로가 되는 다리를 가리켜 '스트림(Stream)'이라 한다. 즉 프로그램과 파일 사이에 스트림을 형성해야 데이터를 주고 받을 수 있다. 프로그램과 파일사에이 스트림이 형성된 것은 파일로부터 데이터를 읽어들일 준비가 됬다는 것이다. #include FILE *fopen(const char *filename, const char *mode); ->성공시 해당 파일의 FILE구조체 변수의 주소 값, 실패시 NULL반환 함수의 첫번째 인자로는 스트림을 형성할 파일의 이름을,. 두 번째 인자로는 형성할 스트림의 종류에 대한 정보를 문자열의 형태로 전달한다. 그러면 이 함수는 해당 파일과의 스트림을 형성하고 스트림정보를 FILE구조체 변수에 담아서 그 변수의 주소 값을 반환한다. FILE이라는 이름의.. 2021. 2. 6.
재귀 함수 재귀는 자료구조와 알고리즘에 있어서 매우 중요한 요소이다. 재귛마수란 함수 내에서 자기 자신을 다시 호출하는 함수를 의미한다. void Recursive(){ printf("Recursive call!\n"); Recursive(); //나 자신을 재호출 } 완료되지 않은 함수를 다시 호출하는 것이 가능하다. Recursive함수가 내부적으로 다시 호출이되면 복사본이 생긴다. 즉 함수가 호출되면 해당 함수의 복사본을 만들어서 실행하는 구조이다. Recursive함수를 실행하는 중간에 다시 Recursive함수가 호출되면, Recursive함수의 복사본을 하나 더 만들어서 복사본을 실행하게 된다. 실제로 함수를 구성하는 명령문은 CPU로 이동이 되어서(복사가 되어서) 실행이 된다. 그런데 이 명령문은 얼마.. 2021. 2. 5.
구조체 구조체(structure)라는 것은 하나 이상의 변수(포인터 변수와 배열 포함)를 묶어서 새로운 자료형으로 정의하는 도구이다. 예를 들어보자. 마우스의 좌표정보를 저장하고 관리한다고 가정하면, int xpos; //마우스의 x좌표 int ypos; //마우스의 y좌표 이둘은 함께하기 때문에, 즉 독립된 정보를 표현하는 것이 아닌, 마우스의 위치라는 하나의 정보를 표현한다. 결국 마우스의 현재 위치 정보를 출력하기 위해서는 저 위에 두변수에 저장된 값을 동시에 참조해야한다. 또한 동시에 갱신되어야 한다 . 그리고 둘중 하나라도 소멸이 된다면 나머지 하나는 의미없는 변수가 되어버린다. 결국 이둘의 변수를 묶기 위해 구조체를 사용한다. struct point { int xpos; int ypos; }; 위의 .. 2021. 2. 4.
자료구조와 알고리즘 이해 자료구조 : 데이터의 표현 및 저장방법 선형구조 : 리스트, 스택 큐 비선형구조 : 트리, 그래프 파일구조 : 순차파일, 색인파일, 직접파일 단순구조 : 정수, 실수, 문자, 문자열 알고리즘 : 표현 및 저장된 데이터를 대상으로 하는 문제의 해결 방법 예를 들면 int arr[10] {1, 2, ...}; //초기화되었다고 가정 for(idx= 0; idx 2021. 2. 3.