第1章第1节练习题2 逆置顺序表

news/2024/5/20 5:47:46 标签: 数据结构, 算法, 顺序表

问题描述

设计一个高效的算法,将顺序表的所有元素逆置,要求算法的空间复杂度为 O(1)

算法思想">算法思想

扫描顺序表L的前半部分,并且同时与L的后半部分交换。

算法描述">算法描述

int Reverse(SqList *L)
{
    ElemType temp;
    for(int i=0;i<L->length/2;i++){
        temp=L->data[i];
        L->data[i]=L->data[L->length-i-1];
        L->data[L->length-i-1]=temp;
    }
    return 0;
}

具体代码见附件


附件

#include<stdio.h>
#define MaxSize 100
typedef int ElemType;

typedef struct{
    ElemType data[MaxSize];
    int length;
}SqList;

int Reverse(SqList *);
void Print(SqList *);

int main(int argc, char* argv[])
{
    SqList SL;
    SL.length=10;
    for(int i=0;i<SL.length;i++){
        SL.data[i]=i;
    }

    int flag;
    Print(&SL);
    flag=Reverse(&SL);
    Print(&SL);

    if(flag==0){
        printf("Success! \n");
    }else{
        printf("Illege! \n");
    }
    return 0;
}


int Reverse(SqList *L)
{
    ElemType temp;
    if(L->length==0){
        printf("illegal!\n");
        return -1;
    }
    for(int i=0;i<L->length/2;i++){
        temp=L->data[i];
        L->data[i]=L->data[L->length-i-1];
        L->data[L->length-i-1]=temp;
    }
    return 0;
}

void Print(SqList *L)
{
    for(int i=0;i<L->length;i++){
        printf("%d\t",L->data[i]);
    }
    printf("\n");
}

http://www.niftyadmin.cn/n/1801517.html

相关文章

超经典的JBOSS入门文章

前言本文是为想在JBOSS环境下进行EJB开发的读者而写的&#xff0c;在阅读本文之前&#xff0c;你最好对EJB有一个基本了解。JBOSS是一个开放源码的免费EJB服务器&#xff0c;它实现了其它J2EE所规定的大多数功能&#xff0c;现在sun公司已经把JBOSS作为J2EE1.4的标准实现服务器…

CodeSmith实用技巧(四):使用扩展属性

SchemaExplorer允许我们获取数据库中一些对象的信息。如果你使用的是SQL Server2000数据库&#xff0c;你可以通过扩展属性获取很多对象的有用的信息。例如&#xff1a;SQL Server定义了一个扩展属性来标识表中的唯一标识字段&#xff0c;在模版中可以这样写&#xff1a;<?…

第1章第1节练习题3 删除指定元素

问题描述 长度为n的顺序表L&#xff0c;编写一个时间复杂度为O(n)&#xff0c;空间复杂度为O(1)的算法&#xff0c;该算法删除线性表中所有值为e的数据元素 算法思想1 用k记录顺序表L中不等于e的元素个数&#xff08;即需要保存的元素个数&#xff09;&#xff0c;边扫描边统计…

第1章第1节练习题4 有序表删除指定区间值

问题描述 从有序顺序表中删除其值在定值s和t之间s<t的所有元素&#xff0c;如果s或t不合理或者顺序表为空&#xff0c;则显示出错信息并退出运行。 算法思想 考虑到本题中给出的是有序顺序表&#xff0c;因此需要删除的元素必然是相连的整体。那么我们只需要找到值大于等于s…

泛型技巧系列:如何提供类型参数之间的转换

从今天起&#xff0c;我将分享一些我在.NET泛型方面的研究心得。这些心得大都是我在设计VBF中思考发现的&#xff0c;还受了很多C模板与JAVA泛型的启发。其中相当多的技巧和概念都是大部分“深入C# 2.0”类文章也见不到的。我考虑把其中概念性的部分系统地整理成书&#xff0c;…

第1章第1节练习题5 无序表删除指定区间值

问题描述 从顺序表中删除其值在给定值s与t之间&#xff08;包含s和t&#xff0c;要求s<t&#xff09;的所有元素&#xff0c;如果s或t不合理或者顺序表为空则显示出错信息并退出运行。 算法思想 注意理解题意&#xff0c;本题与练习题4是不同的&#xff0c;练习题4中说明了该…

第1章第1节练习题6 删除重复值

问题描述 从有序表中删除所有其值重复的元素&#xff0c;使表中所有的元素的值均不同。 算法思想 注意此题中所提到的线性表是有序顺序表&#xff0c;那么值相同的元素一定在连续的位置上&#xff0c;既然这样&#xff0c;那么我们可以使用类似与练习题5的方法。对顺序表进行一…

用于多表更新

{-----------------------------------------------------------------------------单元文件: ADOXQuery 作者: 张峰林 建立日期: 2003-10-2310:55:30作用: 修改历史:-----------------------------------------------------------------------------}unit ADOXQuery;Int…