[Home]
[Contents]
[Chapter]
[Previous Algorithm]
[Next Algorithm]


Merge one ordered sequence


merge( out ) int out; { int i, isml; typekey lastout; extern struct rec LastRec[]; extern char FilStat[]; lastout = MinimumKey; LastRec[0].k = MaximumKey; while (TRUE) { isml = 0; for (i=1; i<=maxfiles; i++) if ( filstat[i]=='i' && !eof(i) && lastrec[i].k>= lastout && LastRec[i].k <lastrec[isml].k ) isml=i; if ( isml==0 ) { for (i=1; i<=maxfiles; i++) if ( filstat[i]=='i' && !eof(i)) return(0); return( 'done' ); } writefile( out, lastrec[isml] ); lastout=LastRec[isml].k; lastrec[isml]=ReadFile(isml); } };

C source (4414.merg1.c)



© Addison-Wesley Publishing Co. Inc.