티스토리 뷰

Study/C/C++

sparse matrix

synsun 2011. 2. 3. 16:43
// 제작환경 : Dev-C++ 4.9.9.2, Visual C++ 2008 Express Edition
 
#include <stdio.h>
#include <stdlib.h>
 
typedef struct ListNode{
 
int x, y, data; // 행, 열, 0이 아닌 값
 
struct ListNode* Next;
 
}ListNode;
 
ListNode head;
 
ListNode* pre = &head;
 
 
void GetNode(void) // 공간 할당하는 함수
{
 
pre->Next = (struct ListNode *)malloc(sizeof(struct ListNode));
 
pre->Next->Next = NULL;
 
scanf("%d%d%d",&pre->Next->x,&pre->Next->y,&pre->Next->data);
 
pre = pre->Next;
 
}
 
void PrintData(void) // 화면에 출력하는 함수
{
 
ListNode* check = &head;
 
while(check->Next != NULL)
{
printf("\n%d %d %d",check->x,check->y,check->data);
 
check = check->Next;
}
 
printf("\n%d %d %d\n",check->x,check->y,check->data); // 마지막에 위치한 데이터 처리
 
}
 
 
void Transepose(void) // 행, 열 위치바꾸는 함수
{
int i, changed = 0;
 
ListNode *put_here = &head;
ListNode *xy = &head;
 
for(i = (head.data-1) ; i>0 ; i--) // 열 순서대로 정렬
{
 
ListNode *change, *pre_change, *temp, *check;
 
check = put_here;
pre_change = put_here;
change = put_here->Next;
 
while(check->Next != NULL)
{
if(change->y > check->Next->y)
{
pre_change = check;
change = check->Next;
changed = 1;
}
check = check->Next;
}
 
if(changed == 1)
{
temp = change->Next;
change->Next = put_here->Next;
put_here->Next = pre_change->Next;
pre_change->Next = temp;
 
changed = 0;
}
 
put_here = put_here->Next;
}
 
 
while(xy->Next != NULL) //행,렬의 위치를 바꿈
{
int _temp;
 
_temp = xy->x;
xy->x = xy->y;
xy->y = _temp;
 
xy = xy->Next;
}
 
int _temp; // 마지막에 위치한 데이터 처리
 
_temp = xy->x;
xy->x = xy->y;
xy->y = _temp;
 
xy = xy->Next;;
 
}
 
 
int main(void)
{
int i;
 
scanf("%d%d%d",&head.x,&head.y,&head.data);
 
for(i = head.data ; i > 0 ; i--)
{
GetNode();
}
 
 
printf("\n입력받은 값 :");
 
PrintData();
 
 
Transepose();
 
 
printf("\nTransepose된 값 :");
 
PrintData();
 
system("PAUSE");
return 0;
}

'Study > C/C++' 카테고리의 다른 글

palindrome  (0) 2011.02.03
알파벳 빈도수 검출 두번째  (0) 2009.05.01
알파벳 빈도수 검출  (0) 2009.05.01
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함