求教C语言指针动态分配内存输出问题

请教大神如何更改能够输出sub2->b7中的数据呢

 for(j=0;j<P;j++)
         {
             if(data[j].b7<=max->t)
                 m++;
             else
                 n++;    
         }
     printf("%d %d\n",m,n);
     sub1=(struct TRAINING*)malloc(sizeof(struct TRAINING)*m);
     sub2=(struct TRAINING*)malloc(sizeof(struct TRAINING)*n);


     for(j=0;j<P;j++,sub1++,sub2++)
     {
         sub1=(struct TRAINING*)malloc(sizeof(struct TRAINING)*m);
         sub2=(struct TRAINING*)malloc(sizeof(struct TRAINING)*n);
         if(data[j].b7<=max->t)
            sub1->b7=data[j].b7;
         else
            sub2->b7=data[j].b7;
     }
     for(i=0;i<n;i++,sub2++)
     {
       printf("%d\n",sub2->b7);
     }

http://c.biancheng.net/cpp/html/2752.html

给的代码不够全面。。。包括结构体等数据类型。。

http://blog.csdn.net/a29562268/article/details/53932682
双向链表list实现 可以参考一下