[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.