ÇÁ·Î±×·¡¹Ö

 3206, 5/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 : 7372     Date : 2014/05/17 11:05



    
MainThread Insert ÇÔ¼ö ³»¿¡¼­ if¹® º¸½Ã¸é plist->tail == NULL ¹Ù²Ù½Ã°í ³ª¸ÓÁö °è¼Ó ÄÚµùÇغ¸¼¼¿ä
From MainThread
2014/05/18  
gxcolin ¿Í °¨»çÇÕ´Ï´Ù!! Àú°Ô ±×·¸°Ô ¾Èº¸ÀÔµð´Ù ¤Ð¤Ð 2014/05/19  
3126   ¹®¼­¾ÏÈ£ Ǫ´Â¹ý??[1]     laclarte
01/16 7425
3125   CÇÁ·Î±×·¡¹Ö ´äº¯Á»..[1]     knagek
09/04 7425
3124   MFC ¦¸ÂÃ߱⠰ÔÀÓ.     hiÂ𱸾ä
05/10 7412
  C¾ð¾î ÇÁ·Î±×·¡¹Ö µµ¿ÍÁÖ¼¼¿ä ¤Ð¤Ð¤Ð[2]     gxcolin
05/17 7371
3122   ¸ð¸£´Â°Ô À־¿©~~~~~c¾ð¾î Ã¥º¸´Ù°¡¿©~~[3]     mintsky1024
12/26 7333
3121   [C¾ð¾î]µÎ ÀÚ¸® ¼ýÀÚ ÀÚ¸´¼ö ¹Ù²Ù±â[1]     tfvarsity
03/19 7328
3120   OllyDBG »ç¿ë¹ý ¾Ë·ÁÁÖ¼¼¿ë~!!![3]     ¾Æ¸£ºô
09/26 7319
3119   [c¾ð¾î] Stack around the variable 'x' was corrupted[1]     yj6393
10/13 7263
3118   C¾ð¾î ÃÖ´ë°ø¾à¼ö ¹®Á¦[2]     so072941594
07/17 7257
3117   visual c++ 6.0 ¾îµð¼­´Ù¿î¹Þ³ª¿ä??[5]     1234321
02/01 7250
3116   TCP/IP ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö ¿À·ù[3]     whtjdwls151
07/13 7203
3115   c++ ¼ÒÄÏÇÁ·Î±×·¡¹Ö     qaz4564
01/14 7193
3114   °£´ÜÇÑ °ÔÀÓ¼Ò½º C++·Î ¸¸µå´Â °Å..[2]     dmsal154
09/06 7165
3113   visual studio 2010 »ç¿ë¹ýÁ» °¥ÄÑ ÁÖ¼¼¿ä[2]     gkswls123
08/06 7068
3112   ÇÑ ÇÁ·ÎÁ§Æ®¿¡ ¿©·¯ ¼Ò½ºÄڵ带 µÑ¼ö¾ø³ª¿ä?[3]     SeungAh
03/01 7048
3111   ¸®´ª½º c¿Í À©µµ¿ì cÀÇ Â÷ÀÌÁ¡À» ¾Ë·ÁÁÖ¼¼¿ä.,..[1]     Ä«ÀÌÀú9
09/04 7043
3110   ¾È³çÇϼ¼¿ä? ¸ÞƾÀ̶ó´Â °ÔÀÓ¿¡ ¸ÅÅ©·Î ¹®Àǵ帳´Ï´Ù.[6]     ¸ÞƾÇØÄ¿
06/30 7040
3109   [C¾ð¾î] Çì´õÆÄÀÏ, #ifndef, #define Áú¹®ÀÌ¿ä.[2]     ¿µ¿øÇÑ°øºÎ
06/11 6980
3108     [re] ºÒ¹ýÀÎÁö ¾Ë·ÁÁÖ¼¼¿ä     admin
09/05 6939
3107   [C¾ð¾î]ÆÄÀÏÀÔÃâ·Â¿¡¼­ fwrite, fclose Áú¹®ÀÔ´Ï´Ù.[3]     bak405
12/12 6937
[1][2][3][4] 5 [6][7][8][9][10]..[161]

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