数据结构->顺序表的操作

1、输入一组整型元素序列,建立顺序表。

2、实现该顺序表的遍历。

3、在该顺序表中进行顺序查找某一元素,查找成功返回1,否则返回0。

4、判断该顺序表中元素是否对称,对称返回1,否则返回0。

5、实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。

6、输入整型元素序列利用有序表插入算法建立一个有序表。

7、利用算法6建立两个非递减有序表并把它们合并成一个非递减有序表。

8、编写一个主函数,调试上述算法。


#include 
#include 
typedef int ElemType;
#define maxn 100000
//const int maxn=10000;
typedef struct node
{
    ElemType data[maxn];
    int length;
}Seqlist;
Seqlist* cj(Seqlist *L)
{
    int t;
    scanf("%d",&t);
    int i=0;
    while(t!=-1)
    {
        L->data[i++]=t;
        L->length++;
        scanf("%d",&t);
        if(L->length>maxn)
        {
            printf("该表已满\n");
            return 0;
        }
    }
    return L;
}
void bl(Seqlist *l)
{
    int i=0;
    for(; ilength; i++)
        printf("%d ",l->data[i]);
    puts("");
}
int cz(Seqlist *l,int t)
{
    int i=0;
    for(;ilength;i++)
     {
         if(l->data[i]==t)
         return 1;
     }
     return 0;
}
int dc(Seqlist *l)
{
     int i=0;
     int j=(l->length)-1;
     while(l->data[i]==l->data[j])
     {
       i++;
       j--;
       if(j<=i)
       return 1;
     }
     return 0;
}
void jh(Seqlist *l)
{
     int i=0;
     int j=(l->length)-1;
     while(idata[i]%2==0&&l->data[j]%2==1)
       {
           int t;
          t=l->data[i];
          l->data[i]=l->data[j];
          l->data[j]=t;
          i++;
          j--;
       }
      else if(l->data[i]%2==0&&l->data[j]%2==0)
       {
           j--;
       }
       else if(l->data[i]%2==1&&l->data[j]%2==1)
       {
           i++;
       }
       else
       {
           i++;
           j--;
       }
     }
}
Seqlist* cr(Seqlist *l)
{
     int t;
    scanf("%d",&t);
    int i=0;
    while(t!=-1)
    {
        l->length++;
        if(i==0)
        l->data[i++]=t;
        else
        {

            int j=0;
            while(l->data[j]<=t)
            {
                j++;
            }
            int k;
            for(k=l->length-1;k>=j;k--)
             l->data[k+1]=l->data[k];
             l->data[j]=t;
            // bl(l);
        }
        scanf("%d",&t);
        if(l->length>maxn)
        {
            printf("该表已满\n");
            return 0;
        }
    }
    return l;
}
Seqlist* hb(Seqlist *a,Seqlist *b,Seqlist *h)
{
    int i=0,j=0,k=0;

      while(ilength&&jlength)
      {
            if(a->data[i]data[j])
      {
          h->data[k++]=a->data[i];
          h->length++;
          i++;
      }
      else
      {
         h->data[k++]=b->data[j];
         h->length++;
           j++;
      }
      }

      if(i!=a->length-1)
      while(ilength)
     { h->data[k++]=a->data[i++];
          h->length++;
     }
      if(j!=b->length-1)
       while(jlength)
       {
            h->data[k++]=b->data[j++];
             h->length++;
       }

      return h;
     /* //合并 短向长合并
    if(a->length>b->length)
    {
        while(jlength)
        {
             int s=0;
        while(a->data[s]data[j])
            {
                s++;
            }
            int k;
        for(k=a->length-1;k>=s;k--)
          a->data[k+1]=a->data[k];
             a->data[s]=b->data[j];
             a->length++;
            j++;
        }
        return a;
    }
    else
    {
         while(jlength)
        {
             int s=0;
        while(b->data[s]data[j])
            {
                s++;
            }
            int k;
        for(k=b->length-1;k>=s;k--)
          b->data[k+1]=b->data[k];
             b->data[s]=a->data[j];
             b->length++;
            // bl(b);
                 j++;
        }
        return b;
    }*/
}
int main()
{
    Seqlist *h,*tt1,*tt2;
    h=(Seqlist *)malloc(sizeof(Seqlist));
    h->length=0;
    h=cj(h);
    bl(h);

    printf("查询1的结果为 %d\n",cz(h,1));
    printf("查询10的结果为 %d\n",cz(h,10));
    printf("查询对称的结果为 %d\n",dc(h));
    jh(h);
      printf("奇数在前 偶数在后 的结果为 ");
       bl(h);
       puts("");
    Seqlist *tt3=(Seqlist *)malloc(sizeof(Seqlist));
    tt1=(Seqlist *)malloc(sizeof(Seqlist));tt1=cr(tt1); printf("非递减有序顺序表1: ");bl(tt1);
    tt2=(Seqlist *)malloc(sizeof(Seqlist));tt2=cr(tt2);  printf("非递减有序顺序表2: ");bl(tt2);
    printf("合并后顺序表");
    bl(hb(tt1,tt2,tt3));
    return 0;
}


你可能感兴趣的:(数据结构)