[프로그래밍]자료구조 - 희소행렬 빠른 전치 관련 ..
복학하기 전에 재수강을 위해 예습하는 중입니다..
물어볼 사람이 없어(전과생에 3년만에복학생이라는..크리 땜시.;;)
이렇게 질문 올려봅니다.
void fast_transpose(term a[], term b[]){
int row_terms[MAX_COL], starting_pos[MAX_COL];
int i, j, num_cols = a[0].col, num_terms = a[0].value;
b[0].row = num_cols;
b[0].col = a[0].row;
b[0].value = num_terms;
if(num_terms > 0){
for(i = 0 ; i < num_cols ; i++) {
row_terms = 0;
}
for(i = 1 ; i <= num_terms ; i++) {
row_terms[a[i].col]++;}
starting_pos[0] = 1; // 첫번째 원소는 b[1] 에 저장
//starting Pos와 관련 아래 For문에서 Starting_Pos와 Row_terms를
더하는 것이 이해가 안갑니다.
for(i = 1 ; i < num_cols ; i++) {
[i]starting_pos[i] = starting_pos[i - 1] + row_terms[i - 1]; }
printf("\n");
for(i = 1 ; i <= num_terms ; i++)
{
j = starting_pos[a[i].col]++; // 각 행의 시작 위치
b[j].row = a[i].col; // 구한 올바른 위치에 원소를 옮긴다.
b[j].col = a[i].row; //
b[j].value = a[i].value; //
}
-- 약간의 그 부분만 설명 부탁드립니다. 계속 그것만 쳐다보고 있네요;;
댓글 달기