码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构实践——顺序表应用

时间:2015-09-08 07:01:16      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

【项目 - 顺序表应用】
定义一个采用顺序结构存储的线性表,设计算法完成下面的工作:
1、删除元素在[x, y]之间的所有元素,要求算法的时间复杂度为O(n),空间复杂度为O(1);
2、将所在奇数移到所有偶数的前面,要求算法的时间复杂度为O(n),空间复杂度为O(1)。

提示:
(1)充分利用前面建立的算法库解决建立顺序表、输出线性表的问题;
(2)为保证复杂度的要求,设计算法并用专门的函数实现算法;
(3)每项工作写一个程序,并发布博文,展示你的实践成果。

[参考解答] (注:项目中所需要的list.h和list.cpp见点击参照…
1、删除元素在[x, y]之间的所有元素,要求算法的时间复杂度为O(n),空间复杂度为O(1);

#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、将所在奇数移到所有偶数的前面,要求算法的时间复杂度为O(n),空间复杂度为O(1)。

#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;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

数据结构实践——顺序表应用

标签:

原文地址:http://blog.csdn.net/sxhelijian/article/details/48285565

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!