희소행렬 구현하기
- 최초 등록일
- 2010.09.14
- 최종 저작일
- 2009.10
- 19페이지/ 한컴오피스
- 가격 1,500원
소개글
희소행렬 구현,희소행렬 class 구현
희소행렬이란 0인 원소를 많이 포함하고있는 경우, 메모리 공간의 불필요한 낭비를 줄이기 위해서 링크드리스트를 이용해 0이아닌 원소만 저장하는 방식을 의미한다. 이러한 희소행렬 클래스를 정의하고, 사용자로부터 임의의 원소 Aij를 입력받았을 때 해당 원소를 반환하는 함수를 구현한다. 또한 반환된 값을 변경할 수 있도록한다
목차
1.문제제기
2.문제분석
3.프로그래밍 소스
본문내용
1. 문제제기 :
희소행렬 클래스를 디자인한다. 희소행렬이란 0인 원소를 많이 포함하고있는 경우, 메모리 공간의 불필요한 낭비를 줄이기 위해서 링크드리스트를 이용해 0이아닌 원소만 저장하는 방식을 의미한다. 이러한 희소행렬 클래스를 정의하고, 사용자로부터 임의의 원소 Aij를 입력받았을 때 해당 원소를 반환하는 함수를 구현한다. 또한 반환된 값을 변경할 수 있도록 하라.
2. 문제분석 & 문제해결 :
(책의 구조와 약간 다르게 구현하였습니다.)
① 사용자로부터 행렬의 크기와 0이 아닌 원소의 개수 입력받기
사용자로부터 행렬의 크기 및 0이 아닌 원소의 개수를 입력받습니다. 그러면 이 값들을 파라미터로 전달하여 Sparse_Matrix클래스의 객체를 생성자를 통해 생성합니다. 생성자에서는 전달받은 파라미터들을 각각 행의 크기, 열의 크기, 0이 아닌 원소의 개수를 저장하는 private변수에 저장합니다.
행이나 열을 처리하기 위해 headnode와 tailnode를 사용하였습니다. 구분을 위해 행번호와 열 번호 및 값은 (-1,-1,0)으로 초기화합니다. headnode를 행의 개수만큼 배열로 선언합니다. 그리고 각각의 headnode[i]는 i번째 행을 담당하게 됩니다.
(각각의 headnode[i]가 각 행을 의미한다.)
이렇게 초기화된 것이 행렬을 행끼리 따로 떼어놓은 모양이 됩니다. 즉, 1행의 3열 원소란, headnode[0]으로 시작하는 리스트에서 열 값이 2인 원소를 찾아내면 됩니다.
② 0이 아닌 원소의 값 입력받기
이 부분에서 필요한 예외처리는 0이 아닌 원소의 개수입니다. 행렬크기는 row*column이므로 0이 아닌 원소의 개수는 최대 row*column을 넘을 수 없습니다. 따라서 가능한 경우는 0부터 row*column개까지의 범위입니다.
참고 자료
없음