알고리즘

·알고리즘
단순 연결 리스트의 방문 연산 방문 연산 -> 리스트 상의 노드를 순차적으로 방문 1) 반복 기법 void display(LIstNode* head) { ListNode* p = head; while (p != NULL) { printf("%d->", p->data); p = p->link; } printf("/n") } //출력문 예시 // 1->2->3->5->10-> p에 head 값을 준다. p가 NULL에 도달할때까지 while문을 반복해 리스트 안의 모든 데이터를 탐색하여 출력한다. 2) 순환 기법 void display_recur(LIstNode* head) { ListNode* p = head; if (p != NULL) { printf("%d->", p->data); display_rec..
·알고리즘
배열로 다항식의 덧셈을 구현할 때 2가지의 선택지가 있다. 1. 모든 차수에 대한 계수 값을 배열로 저장 2. 하나의 다항식을 하나의 배열로 표현 이번 포스팅에는 첫번째 방식으로 구현한 코드를 분석해볼 것이다. 모든 차수에 대한 계수 값을 저장하는 방식의 장단점 장점 같은 차수의 계수를 쉽게 찾을 수 있으므로 알고리즘이 간단하다. 다항식의 각종 연산이 간단해진다 단점 대부분의 항의 계수가 0이라면 메모리 낭비가 심하다. 코드 분석 #include #define MAX(a,b) (((a)>(b)) ? (a) : (b)) #define MAX_DEGREE 101 typedef struct { int degree; //차수 float coef[MAX_DEGREE]; //계수 }polynomial; polyno..
·알고리즘
연결리스트 데이터와 링크를 저장하는 노드를 이용하여 기차처럼 노드를 연결시켜 데이터를 저장하는 것이다. 리스트의 항목들을 노드라고 하는 곳에 분산하여 저장한다. 노드의 구조는 데이터필드, 링크필드로 구성되어있다. 데이터필드: 리스트의 원소, 즉 데이터 값을 저장하는 장소 링크필드: 다른 노드의 주소값을 저장하는 장소 연결 리스트의 장점 삽입, 삭제가 용이하다. 연속된 메모리 공간이 필요 없다. 크기 제한이 없다. 연결 리스트의 단점 구현이 복잡하다. 오류가 발생하기 쉽다. 연결 리스트의 구조 노드: 데이터필드 + 링크 필드 헤드 포인터: 리스트의 첫번째 노드를 가리키는 변수 연결 리스트의 종류 단순 연결 리스트 원형 연결 리스트 이중 연결 리스트 단순 연결리스트의 개념 하나의 링크 필드를 이용하여 연결한..
·알고리즘
아래 코드는 배열을 이용한 다항식 덧셈 코드이다. 덧셈의 기능만 있으며 두 다항식에서 0이 아닌 항만을 {계수,차수} 형식으로 배열에 저장한다. 계수, 지수를 멤버로 한 구조체를 만들고 이를 배열로 생성한다. 하나의 배열에 다항식 A와 다항식 B를 나타내고 그 뒤에 계산을 완료한 다항식 C를 나타낼 것이다. 이 방식의 장점은 메모리 공간을 효율적으로 사용할 수 있다. 하지만 단점으로는 구현이 복잡하다는 점이다. 계산을 완료하면 위와 같은 사진처럼 배열에 정리된다. 해당 방식의 알고리즘 - 다항식 A와 B의 계수와 지수를 비교하여, 지수가 같으면 두 다항식의 계수를 더하여 C로 옮기고 다르면 A,B중 지수가 큰 항의 계수를 C로 옮긴다. - 위와 같은 과정을 어느 한 다항식의 지수가 0이 될 때까지 반복한..
연둔
'알고리즘' 카테고리의 글 목록 (3 Page)