第三周项目4

来源:互联网 发布:seo的优势 编辑:程序博客网 时间:2024/06/06 08:50

  1. /* 
  2. *Copyright (c) 2017,烟台大学计算机与控制工程学院 
  3. *All rights reserved. 
  4. *文件名称: lsy
  5. *作    者:刘思源
  6. *完成日期:2017年9月16日 
  7. *版 本 号:v1.0 
  8. * 
  9. *问题描述:
  10. *输入描述: 
  11. *程序输出: 
  12. */  



#include "list.h"

#include <stdio.h>


//删除线性表中,元素值在x到y之间的元素
void delx2y(SqList *&L, ElemType x,  ElemType y)
{
    int k=0,i; //k记录非x的元素个数
    ElemType t;
    if(x>y)
    {
        t=x;
        x=y;
        y=t;
    }
    for (i=0; i<L->length; i++)
        if (L->data[i]<x || L->data[i]>y )  //复制不在[x, y]之间的元素
        {
            L->data[k]=L->data[i];
            k++;
        }
    L->length=k;
}


//用main写测试代码
int main()
{
    SqList *sq;
    ElemType a[10]= {5,8,7,0,2,4,9,6,7,3};
    CreateList(sq, a, 10);
    printf("删除前 ");
    DispList(sq);


    delx2y(sq, 4, 7);


    printf("删除后 ");
    DispList(sq);
    return 0;

}

2

#include "list.h"
#include <stdio.h>


//移动结束后,奇数居左,偶数居右
void move(SqList *&L)
{
    int i=0,j=L->length-1;
    ElemType tmp;
    while (i<j)
    {
        while ((i<j) && (L->data[j]%2==0))  //从右往左,找到第一个奇数(偶数就忽略不管)
            j--;
        while ((i<j) && (L->data[i]%2==1))  //从左往右,找到第一个偶数(奇数就忽略不管)
            i++;
        if (i<j)   //如果未到达“分界线”,将右边的奇数和左边的偶数交换
        {
            tmp=L->data[i];
            L->data[i]=L->data[j];
            L->data[j]=tmp;
        }
    }   //待循环上去后,继续查找,并在必要时交换
}




//用main写测试代码
int main()
{
    SqList *sq;
    ElemType a[10]= {5,8,7,0,2,4,9,6,7,3};
    CreateList(sq, a, 10);
    printf("操作前 ");
    DispList(sq);


    move(sq);


    printf("操作后 ");
    DispList(sq);
    return 0;
}