검색어 입력폼

[자료구조] [자료구조]Sparce Matrix (희소행렬)

저작시기 2004.09 |등록일 2004.12.27 파일확장자C언어 (c) | 가격 300원

소개글

우선 프로그램에 설정되어 있는 매트릭스 값으로 연산을 합니다.
필요하시면 매트릭스 입력부분과 메뉴 부분만 만드시면 됩니다.
곱셈, 덧셈, 뺄셈, 역행렬 연산이 가능합니다.

컴파일 실행환경

C 언어로 작성되었습니다.
제가 작성한것은 Visual C++ 6.0으로 했습니다.
하지만 리눅스 상에서도 무리없이 돌아갈 것으로 보입니다.
컴파일 후 실행하시면 됩니다.

본문내용

#include <stdio.h>
#include <stdlib.h>

#define MAX 101

typedef struct term T;
struct term {
int r; // Row
int c; // Column
int v; // Value
};

void create (int m[][6], int r, int c, T *b);
void fast_transpose(T a[], T b[]);
void mmult(T a[], T b[], T d[]);
int COMPARE(int i, int j);
void storesum(T d[], int *totald, int row, int column, int *sum);
void madd(T a[], T b[], T d[]);
void mminus(T b[], T b_minus[]);
int COMPARE_T(T *a, T *b);

void main()
{
int i;
int matrix[6][6] = {
{15, 0, 0, 22, 0, -15},
{0, 11, 3, 0, 0, 0},
{0, 0, 0, -6, 0, 0},
{0, 0, 0, 0, 0, 0},
{91, 0, 0, 0, 0, 0},
{0, 0, 28, 0, 0, 0}
};
T b[MAX], b_minus[MAX], mult_result[MAX], trans_result[MAX], add_result[MAX];

create(matrix, 6, 6, b);

mminus(b, b_minus);

for(i=0; i<=15; i++) {
mult_result[i].r = 0;
mult_result[i].c = 0;
mult_result[i].v = 0;
}
// print b mult -b
printf(" [ b mult -b ]\n");
printf(" row column value\n");
mmult(b, b_minus, mult_result);
for(i=0; i<=mult_result[0].v; i++) {
printf("%3d \t %3d \t %3d \n", mult_result[i].r, mult_result[i].c, mult_result[i].v);
}

// print b add b
printf("\n [ b add b ]\n");
printf(" row column value\n");
madd(b, b, add_result);
for(i=0; i<=add_result[0].v; i++) {
printf("%3d \t %3d \t %3d \n", add_result[i].r, add_result[i].c, add_result[i].v);
}

// print b transpose
printf("\n [ b transpose ]\n");
printf(" row column value\n");
fast_transpose(b, trans_result);
for(i=0; i<=trans_result[0].v; i++) {
printf("%3d \t %3d \t %3d \n", trans_result[i].r, trans_result[i].c, trans_result[i].v);
}
}

참고 자료

'C로 쓴 자료구조론'을 공부하시는 분이라면,

한번쯤 해보게 되는 과제 입니다.


C 언어로 Sparce Matrix(희소행렬)의

덧셈, 뺄셈, 곱셈, 역행렬 을 구현하였습니다.
다운로드 맨위로