将一个有序顺序表分裂成两个线性表,一个由奇数组成,一个由偶数组成

将一个有序顺序表分裂成两个线性表,一个由奇数组成,一个由偶数组成

typedef struct _intData
{
    int a[100];
    int len;
}intData;
typedef struct _intlnk
{
    int a;
    _intlnk *next;
}intlnk,*pIntLnk;

pIntLnk AddNode(pIntLnk p,int n)
{
      pIntLnk p1 = (pIntLnk)malloc(sizeof(intLnk));
      p1.a = n;
      p1.next = NULL;
      if(p == NULL)
            p = p1;
      else
      {
              pIntLnk q = p;
              while(q->next != NULL)
                    q = q->next;
              q->next = p1;
      }
      return p;
}

void printLnk(pIntLnk p)
{
      while(p != NULL)
      {
            printf("%d ",p->a;
            p = p->next;
      }
      printf("\n");
}

int main()
{
      pIntLnk p1=NULL,p2=NULL;
      intData d;
      scanf("%d",&d.len);
      int i;
      for(i=0;i<d.len;i++)
          scanf("%d",&d.a[i]);
      for(i=0;i<d.len;i++)
      {
            if(d.a[i]%2==0)
                  p1  = AddNode(p1,d.a[i]);
            else
                  p2 = AddNode(p2,d.a[i]);
      }
      printLnk(p1);
      printLnk(p2);
      return 0;
}