C언어로 구현한 Sparse Matrix
- 최초 등록일
- 2021.03.15
- 최종 저작일
- 2020.04
- 14페이지/ 어도비 PDF
- 가격 1,000원
목차
1. 과제 목표
2. 설계
3. 결과 보고
4. 자료구조 및 알고리즘 분석
5. 전체 코드
본문내용
1. 과제 목표
- Linked List로 Sparse Matrix 구조를 구현하고, 주어진 두 개의 파일에서 행렬을 각각 입력받아 처리하는 프로그램을 작성하시오.
2. 설계
- 이번 과제는 주어진 파일에서 각각 행렬에 대한 정보를 얻되, 이를 배열이 아닌 각각의 노드가 링크드 리스트의 노드 형태로 이어진, 0이 아닌 요소의 데이터만을 갖는 희소 행렬 형태로 처리하는 코드를 구현하는 것이었습니다. 각각의 기능을 모듈화해, mread() 함수로 파일에서의 입력을 처리하고 mwrite() 함수를 통해 행렬 데이터의 시각화 기능을 처리했으며 merase() 함수로 사용한 동적 메모리의 해제 기능을 나누었습니다. 수업시간에 넘어갔던 부분이라 평소보다 더 디버깅하는데 힘들었지만, 평소 헷갈리던 부분이라서 이 과제를 통해 이해가 한층 깊어진 것 같아 뿌듯합니다. 코드에 대한 설명은 4. 자료구조 및 알고리즘 분석에서 이어지겠습니다.
3. 결과 보고
- Input으로 주어진 A.txt와 B.txt의 정보를 입력으로 사용한 결과입니다.
4. 자료구조 및 알고리즘 분석
row가 n이고 col이 m인 행렬이 가지는 이차원 배열의 표현은 반드시 n * m만큼의 공간을 차지한다. 이에 비해 sparse matrix 형태의 표현은 0이 아닌 요소들만을 표현하므로 메모리의 낭비가 적다. 본 코드에서는 해당 요소들을 각각 노드로 구성하고 각각을 링크로 연결시켜줌으로써 전체적으로 링크드 리스트의 형태를 구성하였다. entryNode 같은 경우 요소들이 갖는 최소한의 정보인 행, 열, 그리고 변수값을 가지도록 하는 struct이며, 노드는 이를 포함함과 동시에 다른 노드들을 가리키는 링크를 가지는 matrixNode로 선언하였다. 이 때, 링크는 오른쪽과 아래쪽을 가리키는 down과 right의 값을 가진다.
참고 자료
없음