본문 바로가기

프로그래밍128

[자료구조] [C] 퀵 정렬 (quick sort) 퀵정렬 요약) 피벗을 정한다. 피벗보다 작은 거 왼쪽으로 큰 거 오른쪽으로 보냄 (정렬 안되어있음) 피벗은, 중간값을 잡는 등 응용을 할 수 있음. 과정) 피벗 가장 왼쪽 숫자라고 가정한다. 두개의 변수 low와 high를 사용한다. low 변수는 피벗보다 작으면 통과하고, 크면 정지한다. high 변수는 피벗보다 크면 통과하고, 작으면 정지한다. 정지된 위치의 숫자를 low와 high 교환한다. 쭉 가다가 low와 high가 교차되면 종료. high 자리에 피벗(가장 왼쪽 숫자) 집어넣음. 5 3 8 4 9 1 6 2 7 피벗 low high low high 5 3 2 4 9 1 6 8 7 low high low high low high 5 3 2 4 1 9 6 8 7 low high high low .. 2020. 12. 23.
[자료구조] [C] 사람 이름 사전적 순서 정렬하는 DoubleLinkedList 이중연결리스트 사람의 이름을 사전적 순서로 정렬된 리스트를 유지하는 이중연결리스트를 구현하고 완성하시오. #include #include #include /* 사람의 이름을 사전적 순서로 정렬된 리스트를 유지하는 이중연결리스트 */ /* 컴퓨터공학과_김진엽*/ typedef char element; typedef struct person { element name[64]; struct person *next; struct person *prev; }person; person *first, *last; void init(); //리스트초기화 void dllsorted_insert(); //입력 void dlist_display(); //출력 int main() { int a; init(); for(;;) { puts(".. 2020. 12. 23.
[유닉스] make 정리 [ make ] 정의: -make는 각 파일 간의 종속 관계를 파악해 기술 파일(Makefile)에 기술된 대로 컴파일 명령이나 쉘 명령을 순차적으로 내린다. -make는 각 파일에 대한 반복적 명령을 자동화 시켜 개발자의 수고를 덜고, 시간을 절약할 수 있다. makefile 내용 all : diary #(1) diary : memo.o calendar.o main.o #(2) gcc -W -Wall –o diary memo.o calendar.o main.o #(3) memo.o : memo.c #(4) gcc -w -Wall -c -o memo.o memo.c #(5) calendar.o : calendar.c (6) gcc -w -Wall -c -o calendar.o calendar.c #(7).. 2020. 12. 23.
[유닉스] gdb 디버거 정리 [gdb 디버거] 디버거 사용하는 목적 특정 시점에서의 메모리 값과 레지스터 값을 확인하기 위함. 오류찾기 gdb란? GNU에서 만든 매우 강력한 디버거 gdb 사용하기 위해서는 –g 옵션을 붙여야한다 (디버깅 정보 삽입) 예: gcc –g –o a a.c -디버깅 정보란? 내부에 사용된 심볼 문자열과 심볼의 주소, 컴파일에 사용된 소스 파일, 컴파일된 각각의 인스트럭션들이 어떤 소스파일의 어떤 행에 해당되는지에 대한 정보 등을 말함. *기본 명령어 gdb 실행 : gdb 실행파일명 gdb 종료 : q 또는 Ctrl + d 소스보기 : l (기본 10행 출력) 나머지 부분 보려면 다시 l이나 enter키 특정행 보기: l 행번호 출력된 행 이전행 보기 : l - 특정 함수부분 보기 : l 함수명 다른 파.. 2020. 12. 23.
[유닉스] gcc 컴파일 정리 gcc 컴파일러란? GNU에서 만든 C컴파일러 컴파일 의미 인간이 이해할 수 있는 언어로 작성된 소스코드를 CPU가 이해할 수 있는 기계어로 번역하는 과정 컴파일 과정 like.c (c소스) -> cppo or cc1-E (전처리기) -> like.i (전처리 파일) -> cpp (c컴파일러) -> like.s (어셈블리파일) -> as (어셈블러) -> like.o (오브젝트파일) -> id or collect2 (링크) -> like 실행파일 전처리 과정 (cc1-E) 1. 헤더파일 삽입 (함수 사용 전에 함수 타입 선언 필요) 2. 매크로 치환 및 적용 어셈블리 소스 파일로 컴파일 과정 (cc1) (like.i -> like.s) like.i (전처리파일) -> front-end (C,C++,JAV.. 2020. 12. 23.
[유닉스 이론과 실습] 7장 실습 1. /etc/services 파일에서 tcp를 포함하고 있는 행의 수를 출력하시오. grep -c tcp /etc/services 2. 현재 디렉토리의 모든 파일 중에서 unix를 포함하고 있는 파일의 이름을 출력하시오. grep -l unix * 3. 홈 디렉토리의 *.txt 파일 중에서 Jeremy lin 이라는 이름을 찾으시오. grep 'Jeremy lin' ~/*.txt 4. /etc/hosts 파일에서 #으로 시작하는 모든 행을 행 번호와 함께 출력하시오. grep -n '^#' /etc/hosts 5. 현재 사용하는 유닉스 시스템에서 bash나 ksh을 사용하는 사용자의 목록을 출력하시오. (/etc/passwd 파일에 필요한 정보 있음) egrep 'bash|ksh' /etc/passwd.. 2020. 12. 23.
[유닉스 이론과 실습] 8장 연습문제 1. 유닉스의 프로세스에는 어떤 종류가 있는지 설명하시오. 데몬, 부모, 자식, 고아, 좀비 2. 유닉스의 고아 프로세스와 좀비 프로세스의 차이를 설명하시오. 고아: 실행도중에 부모 프로세스가 종료된 프로세스, 1번 프로세스를 새로운 부모로 가짐 좀비: 부모프로세스가 종료처리를 하지 않은 프로세스, 종료가 되었음에도 할당된 시스템 자원이 회수되지 않은 상태 3. user1 사용자가 실행시킨 프로세스를 모두 찾기 위해 사용할 수 있는 명령에는 무엇이있는지 설명하시오. ps -u user1 4. user1 사용자가 실행시킨 모든 프로세스의 실행 날짜를 알아보려고 한다. ps 명령의 어느 옵션을 조합하여 사용하면 되는지 설명하시오. ps -ef | grep user1 5. pgrep 명령을 사용하여 현재 실행.. 2020. 12. 23.
[유닉스 이론과 실습] 5장 연습문제 1. 표준 입출력 장치가 무엇인지 설명하시오. 시스템이 명령의 입력과 출력에 사용하는 기본 장치 2. > 사용시 기존 파일의 내용을 덮어쓸 수 있다. 이를 방지하기 위한 방법을 설명하시오. >>를 사용하여 뒤에 내용을 붙인다 . 3. “ ”와‘ ’의 차이점을 설명하시오. " " 은 $, `, \을 제외한 모든 특수문자를 일반 문자로 간주해 처리함 ' '은 모든 특수 문자를 일반 문자로 간주해 처리함 4. 현재 사용중인 쉘이 무엇인지 확인하는 방법을 두가지 적으시오. echo \$SHELL grep user1 /etc/passwd 5. 배시 쉘이 사용하는 초기화 파일의 이름을 적고 각각의 특징을 설명하시오. \$HOME/.bash_profile 로그인할 때만 실행됨 \$HOME/.profile .bash_.. 2020. 12. 23.
[유닉스 이론과 실습] 4장 연습문제 1. vi의 동작 모드를 간단히 설명하시오. vi의 모드는 입력모드와 명령모드, 마지막 행 모드로 구분된다. 입력모드는 실제로 내용을 입력할 수 있는 모드고, 명령 모드와 마지막 행 모드는 글자와 행의 삭제, 검색, 저장 등의 기능을 수행한다. vi에서는 입력모드와 명령 모드를 오가며 작업한다. 2. 다음 입력 명령의 차이점을 설명하시오. ① i와 I i는 커서 앞에 입력한다.(현재 커서 자리에) l은 커서가 위치한 행의 첫 칼럼으로 이동해 입력한다. ② a와 A a는 커서 뒤에 입력한다.(현재 커서 다음 자리에) A는 커서가 위치한 행의 마지막 칼럼으로 이동해 입력한다. 3. 파일의 끝으로 이동하는 방법을 두 가지 이상 적으시오. G, :\$ 4. 길이가 3자인 단어를 수정하기 위해 사용할 수 있는 명.. 2020. 12. 23.
[유닉스 이론과 실습] 3장 연습문제 1. 하드 링크와 심볼릭 링크 파일, 복사 파일을 비교 설명 하시오. 하드링크 파일 정의: 하나의 파일에 둘 이상의 다른 이름을 붙인 파일. 파일 특성: 하드링크 파일과 원본 파일은 동일한 파일이다. 원본삭제: 원래 이름을 사용해서 파일을 삭제해도 새로운 이름은 남아 있다. 남은 이름을 사용해 파일의 내용을 보거나 수정하거나 복사하는 작업이 가능하다. 심볼릭 링크 파일 정의: 원본 파일에 접근하기 위해 생성한 파일 파일특성: 심볼릭 링크 파일은 원본 파일을 가리키는 별개의 파일이다. 원본삭제: 원본파일이 지워지면 사용할 수 없다. 복사 파일 정의: 원본 파일을 복사한 파일. 파일특성: 원본 파일을 복사하였지만 원본 파일을 가리키지도 않는 별개의 파일이다. 원본삭제: 원본파일이 지워져도 복사 파일에 영향을.. 2020. 12. 23.