struct s first()
{
struct s head = NULL;
struct s line1 = NULL, line2 = NULL;
struct s column1 = NULL, column2 = NULL;
for (i = 0; i < N; i ++){
column1 = (struct s )malloc(LEN);
for (j = 0; j < N; j ++){
line1 = (struct s )malloc(LEN);
line1->num = j;
//scanf("%d", &line1->num);
line1->next = NULL;
if (j == 0)
column1 = line1;
else
line2->next = line1;
line2 = line1;
}
column1->next = NULL;
if (i == 0)
head = column1;
else
column2->next = column1;
column2 = column1;
}
return head;
}
struct s *second()
{
int data[N][N];
struct s *head = NULL;
struct s *line1 = NULL, *line2 = NULL;
struct s *column1 = NULL, *column2 = NULL;
for (i = 0; i < N; i ++){
for (j = 0; j < N; j ++){
data[i][j] = j;
//scanf("%d", &data[i][j]);
}
}
for (i = 0; i < N; i ++){
line1 = (struct s *)malloc(LEN);
for (j = 0; j < N; j ++){
column1 = (struct s *)malloc(LEN);
column1->num = data[j][i];
column1->next = NULL;
if (j == 0)
line1 = column1;
else
column2->next = column1;
column2 = column1;
}
line1->next = NULL;
if (i == 0)
head = line1;
else
line2->next = line1;
line2 = line1;
}
return head;
}
struct s calculate(struct s data1, struct s data2)
{
struct s head = NULL;
struct s line1 = NULL, line2 = NULL;
struct s column1 = NULL, column2 = NULL;
struct s data1_p1 = NULL, data1_p2 = NULL;
struct s data2_p1 = NULL, data2_p2 = NULL;
int sum = 0;
for (i = 0; i < N; i ++){
column1 = (struct s *)malloc(LEN);
for (j = 0; j < N; j ++){
line1 = (struct s *)malloc(LEN);
data1_p1 = data1;
data2_p1 = data2;
for (int m = 0; m < i; m ++){
data1_p1 = data1_p1->next;
data2_p1 = data2_p2->next;
}
data1_p2 = data1_p1;
data2_p2 = data2_p1;
sum = 0;
for (int q = 0; q < N; q ++){
sum = sum + data1_p2->num * data2_p2->num;
data1_p2 = data1_p2->next;
data2_p2 = data2_p2->next;
}
line1->num = sum;
line1->next = NULL;
if (j == 0)
column1 = line1;
else
line2->next = line1;
line2 = line1;
}
column1->next = NULL;
if (i == 0)
head = column1;
else
column2->next = column1;
column2 = column1;
}
return head;
}
void print(struct s head)
{
struct s line = NULL;
struct s *column = head;
for (i = 0; i < N; i ++){
line = column;
for (j = 0; j < N; j ++){
printf("%d\t", line->num);
line = line->next;
}
column = column->next;
printf("\n");
}
}
int main ()
{
print(calculate(first(), second()));
return 0;
}
include
include
define LEN sizeof(struct s)
define N 3
int i, j;
struct s { int num; struct s *next; };
struct s first() { struct s head = NULL; struct s line1 = NULL, line2 = NULL; struct s column1 = NULL, column2 = NULL; for (i = 0; i < N; i ++){ column1 = (struct s )malloc(LEN); for (j = 0; j < N; j ++){ line1 = (struct s )malloc(LEN); line1->num = j; //scanf("%d", &line1->num); line1->next = NULL; if (j == 0) column1 = line1; else line2->next = line1; line2 = line1; } column1->next = NULL; if (i == 0) head = column1; else column2->next = column1; column2 = column1; } return head; }
struct s *second() { int data[N][N];
}
struct s calculate(struct s data1, struct s data2) { struct s head = NULL; struct s line1 = NULL, line2 = NULL; struct s column1 = NULL, column2 = NULL; struct s data1_p1 = NULL, data1_p2 = NULL; struct s data2_p1 = NULL, data2_p2 = NULL; int sum = 0;
}
void print(struct s head) { struct s line = NULL; struct s *column = head; for (i = 0; i < N; i ++){ line = column; for (j = 0; j < N; j ++){ printf("%d\t", line->num); line = line->next; } column = column->next; printf("\n"); } }
int main () { print(calculate(first(), second())); return 0; }