- 자료구조 00 : 자료구조와 알고리즘, 이름 짓기, typedef, 매크로 함수2024년 09월 25일 16시 39분 04초에 업로드 된 글입니다.작성자: UXO Studio
01 자료구조
02 알고리즘
03 자료구조를 위한 C언어 코딩 스타일
04 매크로 함수
01 자료구조
: 프로그램에서 처리할 자료를 표현, 저장하는 구조
일상에서 자료구조와 대응하는 것들
일상 자료구조 해야할 일을 수첩에 기록 리스트 책상에 책을 쌓아 올림 스택 극장에서 티멧을 사기 위해 줄을 섬 큐 영어 사전의 단어는 알파벳 순으로 정렬 정렬, 탐색 회사의 계층적 조직도 트리 지도에는 도시들의 연결 상태를 표시 그래프 컴퓨터 프로그램 = 자료구조 + 알고리즘
ex) 최대값 탐색 프로그램 = 배열 + 순차탐색
02 알고리즘
: 주어진 문제를 해결하는 개략적인 절차
021 알고리즘 기술 방법
자연어
- 자연어로 기술
- 사람이 이해하기 쉽지만 모호할 수 있음
ex)
ArrayMax(A,n) 배열 A의 첫번쨰 요소를 변수 tmp에 복사 배열 A의 다음 요소들을 차례대로 tmp와 비교하면서 더 크면 tmp로 복사 배열 A의 모든 요소를 비교했으면 tmp를 반환
흐름도 Flow Chart
- 직관적이고 이해하기 쉬운 알고리즘 기술 방법
- 복잡한 알고리즘의 우, 상당히 크고 복잡해짐
ex)
프로그래밍 언어
- 알고리즘의 가장 정확한 기술
- 구체적인 사항들이 알고리즘의 핵심적인 내용들의 이해를 방해할 수 있음
ex)
#define MAX_ELEMENTS 100 int score[MAX_ELEMENTS]; int find_max_score(int n) { int i, tmp; tmp=score[0]; for(i=1;i<n;i++){ if( score[i] > tmp ){ tmp = score[i]; } } return tmp; }
유사 코드 Pseudo-Code
- 프로그래밍 언어의 표현 형태를 일부 사용
- 설명의 편의를 위해 자연어를 부가적으로 기술
- 유사코드는 어떤 프로그래밍 언어로도 구현 가능 (프로그래밍 언어 독립)
ex)
for (i = 0; i < n; i++) { list[i]부터 list[n-1]까지를 검사하라; 그 결과, list[min]이 가장 작은 값이라 하자; list[i]와 list[min] 값을 서로 교환(Interchange)하라; }
03 자료구조를 위한 C언어 코딩 스타일
031 이름 짓기
상수 : 대문자로 구성, #define으로 정의
- #define MAX_ELEMENT 100
- #define PI 3.14
변수명 : 소문자 사용, '_'으로 단어 분리, 변수 의미 단어 또는 약어
- int increment;
- int new node;
- int newNode;
함수명 : 동사 사용, 함수가 하는 작업 표기, 여러 자료구조를 사용하는 경우 자료구조의 이름을 붙임
- int add(ListNode *node)
- int listAdd(ListNode *node)
032 typedef
: 사용자 정의 데이터 타입을 만드는 키워드
- 코드를 깔끔하게 정리하는 데 도움이 됨
- 오남용 시 코드를 이해하는 데 방해가 됨
ex)
// 기본 타입에 새로운 이름 부여 typedef float RealNumber; // 'float' 타입에 'RealNumber'라는 이름을 부여 // 'RealNumber'라는 이름을 사용해 변수를 정의할 수 있음 RealNumber x = 3.14; // 'float x = 3.14;'와 동일한 의미
// 구조체에 새로운 이름 부여 // 구조체 정의와 동시에 'struct ListNode'를 'ListNode'라는 이름으로 정의 typedef struct ListNode { element data; // 데이터를 저장하는 필드 (element 타입은 미리 정의되어 있어야 함) struct ListNode *link; // 다음 노드를 가리키는 포인터 } ListNode; // 'struct ListNode' 대신 'ListNode'로 간결하게 변수를 정의할 수 있습니다. ListNode node; // 'struct ListNode node;'와 동일한 의미
033 구조체
: 서로 관련된 여러 데이터를 하나의 단위로 묶어주는 사용자 정의 데이터 타입
ex)
#include <stdio.h> // 구조체 정의 struct Person { char name[50]; // 이름 (문자열) int age; // 나이 (정수형) float height; // 키 (실수형) }; int main() { // 구조체 변수 선언 struct Person person1; // 구조체 멤버에 값 할당 person1.age = 30; person1.height = 175.5; snprintf(person1.name, sizeof(person1.name), "John Doe"); // 구조체 멤버 출력 printf("Name: %s\n", person1.name); printf("Age: %d\n", person1.age); printf("Height: %.2f\n", person1.height); return 0; }
04 매크로 함수
일반 함수 : 함수 호출 방식, 더 안전하고 명확하며, 특히 포인터를 이용해 메모리를 직접 조작할 수 있음.
ex)
void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } swap(&10, &20);
매크로 함수 : 단순 텍스트 치환 방식, 컴파일 전에 확장됨, 빠르지만 오류 가능성 있음.
ex)
#define SWAP(a, b, temp) { temp = a; a = b; b = temp; } SWAP(10, 20, temp);
컴파일 전에 main 함수는 다음과 매크로 함수가 확장되어 컴파일 진행함
ex)
void main(void) { int a = 10, b = 20, temp; printf(“a = %d, b = %d", a, b); (temp)=(a), (a)=(b), (b)=(temp); printf (“a = %d, b = %d", a, b); (temp)=(a), (a)=(b), (b)=(temp); printf (“a = %d, b = %d", a, b); }
#자료구조 #알고리즘 #C언어 #코딩스타일 #마크로함수 #매크로함수 #구조체 #typedef #포인터 #자료구조알고리즘 #컴퓨터과학 #프로그래밍 #유사코드 #PseudoCode #프로그래밍언어 #최대값탐색 #C언어자료구조 #코딩규칙 #함수명명법 #상수정의 #변수명규칙 #스택 #큐 #리스트 #트리 #그래프 #자료구조기초 #데이터구조 #프로그래밍기법 #프로그래밍팁 #컴퓨터프로그래밍 #코딩테크닉
'C C++ > Data Structure' 카테고리의 다른 글
자료구조 02 : 포인터와 동적 메모리 할당 *, &, malloc, free (0) 2024.09.25 다음글이 없습니다.이전글이 없습니다.댓글