home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume8 / graph+ / part02 / appendtb.c < prev    next >
Encoding:
C/C++ Source or Header  |  1987-03-01  |  1.2 KB  |  57 lines

  1. /*
  2.  * Copyright (C) 1986   Alan Kent
  3.  *
  4.  * Permission is granted to freely distribute part or
  5.  * all of this code as long as it is not for profit
  6.  * and this message is retained in the code.
  7.  *
  8.  * No resposibility is taken for any damage or incorect
  9.  * results this program generates.
  10.  * 
  11.  */
  12.  
  13.  
  14. #include <stdio.h>
  15. #include "graph.h"
  16.  
  17.  
  18. extern table_st *new_table ();
  19.  
  20.  
  21. table_st *
  22. append_tables ( tab1 , tab2 )
  23. table_st *tab1 , *tab2;
  24. {
  25.     register table_st *p1 , *p2;
  26.     table_st *newtab;
  27.     int count;
  28.     int i;
  29.  
  30.  
  31.     if ( tab1 == NULL )
  32.     return ( tab2 );
  33.     if ( tab2 == NULL )
  34.     return ( tab1 );
  35.     p1 = tab1;
  36.     p2 = tab2;
  37.     count = 0;
  38.     while ( p1 != NULL  &&  p2 != NULL ) {
  39.     p1 = p1->next;
  40.     p2 = p2->next;
  41.     count++;
  42.     }
  43.     if ( p1 != NULL  ||  p2 != NULL )
  44.     abort ( "Tables must be of same width to append them" );
  45.     newtab = new_table ( count , tab1->size + tab2->size );
  46.     for ( p1 = tab1, p2 = newtab; p1 != NULL; p1 = p1->next, p2 = p2->next )
  47.     for ( i = 0; i < tab1->size; i++ )
  48.         p2->data[i] = p1->data[i];
  49.     for ( p1 = tab2, p2 = newtab; p1 != NULL; p1 = p1->next, p2 = p2->next )
  50.     for ( i = 0; i < tab2->size; i++ )
  51.         p2->data[i+tab1->size] = p1->data[i];
  52.     free_table ( tab1 );
  53.     free_table ( tab2 );
  54.     return ( newtab );
  55. }
  56.  
  57.