Hello all! This one of my programe, when it is running, a warning that" 
0xC00000FD: Stack overflow"!Can you help me!Thank you!
 
 
 #include "stdafx.h"
   #include<stdio.h>
   #include<stdlib.h>
   #include<time.h>
   
   void makemerge(int *, int *);
   void disresult(int *queue, int *front, int *rear);
   void enqueue( int *queue, int n, int *rear, int data);
   int dequeue(int *queue, int *front, int *rear);
   int n1,n2;
   FILE *output;
   
   int main()
   {
       int s1[101]={0};
       int s2[101]={0};
       int i,j,r;
       
       output=fopen("1.dat", "w");
       
       srand(time(NULL));
       n1=rand() % 100+1;
       n2=rand() % 100+1;
              
       for (i=0; i<n1; i++)
           s1[i]=rand() % 100;
       for (i=0; i<n2; i++)
           s2[i]=rand() % 100;
    
       
       for (i=0; i<n1; i++)
           for (j=i+1; j<n1; j++)
               if (s1[i]>s1[j]) {
                  r=s1[i];
                  s1[i]=s1[j];
                  s1[j]=r;
               }
                      
       for (i=0; i<n2; i++)
           for (j=i+1; j<n2; j++)
               if (s2[i]>s2[j]) {
                  r=s2[i];
                  s2[i]=s2[j];
                  s2[j]=r;
               }    
      for (i=0; i<n1; i++)
          fprintf(output, "%d ", s1[i]);
      fprintf(output,"\n\n");
      for (i=0; i<n2; i++)
          fprintf(output,"%d ", s2[i]);
      fprintf(output,"\n\n");
      
      makemerge( s1, s2 );
      fclose(output);
    
      system("pause"); 
      return 0;
   }  
   
   void makemerge(int *s1, int *s2)
   {
        int *sq1=s1, *sq2=s2, *tq;
        int fq1=0, rq1=n1, fq2=0, rq2=n2, ft=0, rt=0;
        int n=n1+n2,data;
        
        tq=(int*)malloc(n*2);
        
        while ((fq1<rq1) && (fq2<rq2))
        { 
              if (*(sq1+fq1)<*(sq2+fq2))
                 data=dequeue(sq1, &fq1, &rq1);
              else
                 data=dequeue(sq2, &fq2, &rq2);
              enqueue(tq, n, &rt, data);
        }
        
        
        if (fq1==rq1)
        {
           while (fq2<rq2)
           {
                 data=dequeue(sq2, &fq2, &rq2);
                 enqueue(tq, n, &rt, data);
           }
        }
        
        if (fq2==rq2)
        {
           while (fq1<rq1)
           {
                 data=dequeue(sq1, &fq1, &rq1);
                 enqueue(tq, n, &rt, data);
           }
        }
        
        disresult(tq, &ft, &rt);
   }
   
   int dequeue(int *queue, int *front, int *rear)
   {
        int data;
        
        if ( *rear==*front )
        {
             printf("出队错误!");
             exit(-1);
        }
        
        data=*(queue+*front);
        *front=*front+1;
        
        return data;
   }
   
   void enqueue(int *queue, int n, int *rear, int data)
   {
        if (*rear>=n)
        {
           printf("入队错误!");
           exit(-1);
        }
        *(queue+*rear)=data;
        
        *rear=*rear+1;
   }
   
   void disresult(int *queue, int *front, int *rear)
   {
        while( *front<*rear)
        {
               fprintf(output,"%d ", *(queue+*front));
               *front=*front+1;
        }
   }


[Non-text portions of this message have been removed]

Reply via email to