Ÿ 

X.  ϱ  Ÿ 

      ִ.
   1. ڼ               - morphChart
   2. ¼         - resultChart
   3. ӽ÷ Ǵ    - tempChart

   ڼ , ¼      Ǿ,
   ӽ÷ Ǵ  ұĢ ó , ӽ
     Ƶδ ̴. ó   1
    ǰ, ¼ ؼ ÿ 2 3   
   , ᱹ ¼ ؼ    2 ʿϴ.

        ٸ ҿ ,  ADT̴.
     ADT Ѵ.

   struct tagChart {
       short    edgeID;
       short    startNode;
       short    endNode;
       short    valueLen;
       char*    value;
   }

   struct tagChart *chartID[];
   (chart ID -> pointer to chart pool)

   edgeID - unique in tagChart, we will decide when an edge is
     inserted as the 'max(edgeIDs) + 1', so edgeID is different
     from the index of array of structures.
     edgeID is non-zero, so the initial value of edgeID is 1.

   startNode, endNode must be determined before call
   chartInsert().

   value  "/{exm}"   ϱ 
   malloc(),free()  Ͽ ǰ    .
   value is an string which is terminated by '\0'


   ϴ  :

   functions :
 - int chartMake( initNumber )
       int initNumber;

   argument :
       initNumber - ó  .
   return :
       chart ID - this ID is unique.

 - int chartDelete( chartID )
       int chartID;

   argument :
       chartID - chart ID
   return :
       TRUE
       FALSE

 - int chartInsert( chartID, startNode, endNode, value )
       short startNode;
       short endNode;
       char* value;

   argument :
       startNode - start Node in tagChart structure
       endNode - end Node of edge
       value - string which is terminated by '\0'
	       and the contents are same with the value in valueLen
   return :
       edgeID (non-zero)
       FALSE (0)

 - int chartDelete( chartID, edgeID )
       short edgeID;

   argument :
       edgeID - edgeID in tagChart structure
   return :

 - int chartFindByStartNode( chartID, startNode )
       short startNode;
   argument :
       startNode - start node value.
       and more if startNode value is -1, then it will find the next
       edge of which startNode value is same as the previous one.
   return :
       edgeID (non-zero)
       FALSE if there is none.

 - int chartFindByEndNode( chartID, endNode )
       short endNode;

       same with charFindByStartNode except that this function use
       endNode to find some edge instead of startNode.
      
 - int chartValue( chartID, edgeID, value )
       short edgeID;
       char* value; // OUT mode

       get values from chart.
   argument :
       edgeID - edge ID which is retrieved by chartFind*() functions.
   return :
       value - return the value of edge
       FALSE - if fail.
       TRUE - if success
