ÇÁ·Î±×·¡¹Ö

 3206, 1/161 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   gxcolin
   C¾ð¾î ÇÁ·Î±×·¡¹Ö µµ¿ÍÁÖ¼¼¿ä ¤Ð¤Ð¤Ð

http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_programming&no=6460 [º¹»ç]


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

typedef struct ListNode
{
        int row;
        int col;
        int value;
        struct ListNode *link;
} ListNode;
typedef struct ListHeader
{
        int length;
        ListNode *head;
        ListNode *tail;
} ListHeader;

void init (ListHeader *plist)
        {
                plist -> length = 0;
                plist -> head = NULL;
                plist -> tail = NULL;
        }
        void insert_node_last(ListHeader *plist, int row, int col, int value)
                
        {

                ListNode *temp = (ListNode *)malloc(sizeof(ListNode));
                if(temp==NULL) fprintf(stderr,"¸Þ¸ð¸® ÇÒ´ç ¿¡·¯\n");
                temp->row=row;
                temp->col=col;
                temp->value=value;
                temp->link = NULL;
                if(plist->tail=NULL)
                        {
                                plist->head=plist->tail=temp;
                        }
                        else
                        {
                                plist->tail->link = temp;
                                plist->tail=temp;
                        }
                                plist->length++;
                }
                
                void sparse_matrix_add2(ListHeader *plist1, ListHeader *plist2, ListHeader *plist3, int n2)
                {
                        ListNode *a = plist1->head;
                        ListNode *b = plist2->head;
                        int sum;
                        while(a->link!=NULL && b->link!=NULL)
                        {
                                int inda = (a->row)*n2 + a->col;
                            int indb = (b->row)*n2 + b->col;
                                if(inda<indb)
                                {
                                        insert_node_last(plist3,a->row,a->col,a->value);
                                        a=a->link;
                                }

                                else if(inda == indb)
                                {
                                sum = a->value + b->value;
                                     if(sum!=0)
                                                 {
                                                         insert_node_last(plist3,a->row,a->col,sum);
                                                 a=a->link, b=b->link;
                                             }
                                         else a=a->link,b=b->link;
                                }
                                
                                else if(inda>indb)
                                {
                                        insert_node_last(plist3,b->row,b->col,b->value);
                                        b=b->link;
                                }}
                        for(;a!=NULL;a=a->link)
                                insert_node_last(plist3,a->row,a->col,a->value);
                        for(;b!=NULL;b=b->link)
                                insert_node_last(plist3,b->row,b->col,b->value);
                }

                void sparse_matrix_print(ListHeader *plist)
                {
                        ListNode *p=plist->head;
                        for(;p;p=p->link)
                                printf(" %d %d %d\n",p->row,p->col,p->value);
                }
                void main()
                {
                        ListHeader list1,list2,list3;
                        int row=0,col=0,value=0;
                        int n1=0,n2=0,n3=0;
                        int m1=0,m2=0,m3=0;
                        int s=0;

            FILE *fp=NULL, *fs=NULL;
                        

                        init(&list1);
                        init(&list2);
                        init(&list3);

                                fp=fopen("input.txt","rt");
                                if(fp==NULL)
                                {
                                        printf("input.txt ÆÄÀÏ¿ÀǺҰ¡ \n");
                                        fclose(fp);
                                        return;
                                }
                                else
                                {
                                fscanf(fp,"%d %d %d",&n1,&n2,&n3);
                                while(1)
                                {
                                        if(fscanf(fp,"%d %d %d", &row,&col,&value) != (n1,n2,value))
                                        insert_node_last(&list1, row, col, value);
                                        
                                        else
                                                {
                                                        m1=row, m2=col;
                                                        break;
                                            }
                                }
                                        //fscanf(fp,"%d %d %d",&m1,&m2,&m3);
                                        //if(m1==n1 && m2==n2)
                                                //break;
                
                                while(1)
                                {
                                        if(fscanf(fp,"%d %d %d", &row, &col, &value)!=EOF)
                                                insert_node_last(&list2,row,col,value);
                                        else break;
                                }
                                
                                sparse_matrix_print(&list1);
                                sparse_matrix_print(&list2);
                                }}




¾È³çÇϼ¼¿ä
C¾ð¾î·Î row¶û columnÀ̶û value·Î ±¸¼ºµÈ Sparse Matrix¸¦ Linked List·Î ±¸ÇöÇؼ­ µ¡¼À¿¬»êÇÏ´Â ÇÁ·Î±×·¥À» Â¥°í Àִµ¥¿ä.
»õ·Î¿î node Ãß°¡ÇÏ´Â ÇÔ¼ö¶û µ¡¼À¿¬»êÇÏ´Â ÇÔ¼ö¸¦ Á¤ÀÇÇÏ°í ¾Æ·¡¿Í °°Àº ³»¿ëÀÇ input.txt¿¡¼­ µÎ sparse matrix¸¦ ¹Þ¾Æ¼­ µ¡¼À¿¬»ê Çؼ­ output.txt¿¡ Ãâ·ÂÇÏ°Ô ÇÏ·Á´Â ÇÁ·Î±×·¥Àä
±× Áß¿¡¼­ input.txt¿¡¼­ fscanf·Î °ªÀ» ¹Þ¾Æ ¿£ÅÍ ±âÁØ À­ºÎºÐÀº list1¿¡ ³ëµå¸¦ °è¼Ó Ãß°¡ÇÏ°í ¾Æ·§ºÎºÐÀº list2¿¡ Ãß°¡ÇÏ´Â ¼Ò½º¸¸ ¿Ã·ÁºÃ½À´Ï´Ù.
±×¸®°í ¼Ò½º ¸Ç ¹Ø ºÎºÐ sparse_matrix_print(&list1)À̶û 2´Â ¸Þ¸ðÀå¿¡¼­ Àß ºÒ·¯¿Í¼­ Àß ÀúÀåÇß´ÂÁö È®ÀÎÇÏ´Â ÇÔ¼ö°í¿ä.

ÄÄÆÄÀÏÀº µÇ´Âµ¥ µð¹ö±×Çϴϱî ÀÚ²Ù ÀÌ·± ¿À·ù°¡ ¶ß³×¿ä

main.c.exeÀÇ 0x00c01504¿¡ 󸮵ÇÁö ¾ÊÀº ¿¹¿Ü°¡ ÀÖ½À´Ï´Ù. 0xC0000005: 0x0000000c À§Ä¡¸¦ ±â·ÏÇÏ´Â µ¿¾È ¾×¼¼½º À§¹ÝÀÌ ¹ß»ýÇß½À´Ï´Ù.

±×¸®°í ¾Æ·¡ÂÊ Áö¿ª(?)À» º¸´Ï pllistÀÇ headÀÇ row¶û colÀ̶û value, link¿¡
CXX0030 ¿À·ù :  ½ÄÀ» °è»êÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ·± °Íµµ º¸ÀÌ°í¿ä.

¾Æ ÁøÂ¥ µ¹°Ú³×¿ä ¹¹°¡ Ʋ·È´ÂÁö °¨ÀÌ ¾ÈÀâÈ÷´Ï±î ¹» ¾î¶»°Ô ¹æÇâÀ» Àâ¾Æ¾ß ÇÒ Áö ¸ð¸£°Ú½À´Ï´Ù. »ì·ÁÁÖ¼¼¿ä


input.txt
2 3 3
0 0 2
0 2 1
1 2 3

2 3 4
0 0 1
0 1 1
0 2 2
1 1 2

output.txt
Addition
2 3 5
0 0 3
0 1 1
0 2 3
1 1 2
1 2 3




  Hit : 7369     Date : 2014/05/17 11:05



    
MainThread Insert ÇÔ¼ö ³»¿¡¼­ if¹® º¸½Ã¸é plist->tail == NULL ¹Ù²Ù½Ã°í ³ª¸ÓÁö °è¼Ó ÄÚµùÇغ¸¼¼¿ä
From MainThread
2014/05/18  
gxcolin ¿Í °¨»çÇÕ´Ï´Ù!! Àú°Ô ±×·¸°Ô ¾Èº¸ÀÔµð´Ù ¤Ð¤Ð 2014/05/19  
3206   SNSÇØÅ·ÀÌ µÇ³ª¿ë? µµ¿ÍÁÖ¼¼¿ä ¤Ð¤Ð¤Ð [2]     ÇÑä¹Î
02/28 341
3205   Ä¡Æ®¿£Áø °í¼öºÐ °è½Ç±î¿ä[1]     rjsdudals123
02/15 194
3204   ¿À·ù Á» ã¾ÆÁÖ¼¼¿ä [1]     marunim
05/30 927
3203 ºñ¹Ð±ÛÀÔ´Ï´Ù  124     minsub87
08/17 1
3202   c¾ð¾î segmentation fault:11 ¿À·ù Áú¹®µå¸³´Ï´Ù![2]     leebk1124
05/21 2009
3201   C++ÇÔ¼ö°ü·Ã Áú¹®ÀÌ¿¡¿ë!![3]     1999dylee
05/11 1845
3200   ÆÄÀ̽ã Áö¹® µå¸³´Ï´Ù.[1]     kksh1107
04/24 1588
3199   ¸®¹ö½ÌÀÇ ¼¼¹ø¤Š ²É - ¿ª¶û-     nninni79
04/20 2289
3198   ´Þ°í³ª ¹®¼­ ½©ÄÚµå[1]     ghjk645
03/24 1609
3197 ºñ¹Ð±ÛÀÔ´Ï´Ù  c¾ð¾î ¼Ò¼ö °ª     adwefq
04/29 0
3196   C¾ð¾î ¼Ò½ºÁú¹®ÀÔ´Ï´Ù![5]     an0088
01/05 5128
3195   C++ /// ºôµå ¿¡·¯ ¤Ð¤Ð[1]     guichanta
08/23 2399
3194 ºñ¹Ð±ÛÀÔ´Ï´Ù  c¾ð¾î µµ¿ÍÁÖ¼¼¿ä¤Ð¤Ð     su6339
04/06 0
3193   ÇØÅ·À» ¹è¿ì·Á°íÇϴµ¥[3]     zoodem04
03/26 4181
3192   c¾ð¾î¸¦ ¹è¿ì°í½Í¾î¿ä ![7]     dwc07238
02/11 4065
3191   ½ºÅÃÀÌ ½×ÀÌ´Â ¹æÇâ¿¡ °üÇؼ­!![1]     hackxx123
12/10 3517
3190   ÇØÅ·Åø¿¡¼­ ip ¾øÀÌ Çϵ忡 ½É´Â°Å¿¡´Â ¾î¶²°Ô ÀÖÀ»±î¿ä?[2]     aowlrgmlals
11/27 4281
3189   C¾ð¾î Çϴµ¥ double ½Ç¼ö¸¦ ³ÖÀºµ¥ ÀÚ²Ù 0.0ÀÌ ³ª¿Í¿ä[2]     fatou10336
11/20 3735
3188   dumpcode.h ÀÌÇØÁ» µµ¿ÍÁÖ¼¼¿ä .[1]     cm6418
11/06 3707
3187   c¾ð¾î ¾Ë°í¸®Áò Áú¹®ÀÔ´Ï´Ù.[3]     alstn8150
10/12 3737
1 [2][3][4][5][6][7][8][9][10]..[161]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org