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

news/2024/5/20 9:50:32 标签: 数据结构, 算法, 顺序表

问题描述

从有序表中删除所有其值重复的元素,使表中所有的元素的值均不同。

算法思想">算法思想

注意此题中所提到的线性表是有序顺序表,那么值相同的元素一定在连续的位置上,既然这样,那么我们可以使用类似与练习题5的方法。对顺序表进行一次遍历,使用k记录元素值不相同的元素的下标。这样以来当有若干个值相同的元素时,我们只保留第一个相同值元素,若不相同时,略过便可,最后对顺序表的表长重置即可解决此问题。
因为这里只考虑算法的思想,对具体细节并不做讨论,因此假定所有的元素都是正整数。

算法描述">算法描述

void Delrept(SqList *L){
    int k=0;
    ElemType temp=-1;
    for(int i=0;i<L->length;i++){
        if(L->data[i]!=temp){
            temp=L->data[i];
            L->data[k++]=L->data[i];
        }
    }
    L->length=k;
}

具体代码见附件


附件

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

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

int Delrept(SqList *);
void print(SqList *);

int main(int argc, char* argv[]){
    SqList SL;
    SL.length=10;
    SL.data[0]=1;SL.data[1]=1;SL.data[2]=2;SL.data[3]=2;SL.data[4]=2;
    SL.data[5]=3;SL.data[6]=3;SL.data[7]=3;SL.data[8]=3;SL.data[9]=4;

    int flag;
    print(&SL);
    flag=Delrept(&SL);
    print(&SL);

    if(flag==0){
        printf("Delete success!\n");
    }else{
        printf("Dlelet illegal!\n");
    }
    return 0;
}

int Delrept(SqList *L){
    int k=0;
    ElemType temp=-1;
    if(L->length==0){
        return -1;
    }
    for(int i=0;i<L->length;i++){
        if(L->data[i]!=temp){
            temp=L->data[i];
            L->data[k++]=L->data[i];
        }
    }
    L->length=k;
    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/1801510.html

相关文章

用于多表更新

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

第1章第1节练习题7 顺序表的归并

问题描述 将两个有序的顺序表合并成一个新的有序顺序表&#xff0c;由函数返回结果顺序表 算法思想 本题实际就是归并排序的一种特殊情况&#xff0c;因为两个顺序表皆有序&#xff0c;这样我们只需要不断的取下两个顺序表中表头元素较小的那个数&#xff0c;然后将其存入新的顺…

基于EXCEL的WEB报表输出组件

HFSoft.Report是一个基于EXCEL的WEB报表输出组件&#xff0c;它的目标是快速灵活地建立EXCEL的报表文件。开发人员并不需要了解相关EXCEL&#xff08;COM&#xff09;、VBA等相关知识&#xff0c;只需要通过HFSoft.Report组件来编写输出模板&#xff0c;组件就会自动地根据模板…

一些好的网站

csdn社区: http://community.csdn.net/IBM开发中国: http://www-128.ibm.com/developerworks/cn/RadHat版本下载: ftp://166.111.121.3/Linux/RedHat/中国IT动力: http://www.chinaitpower.com/协议: http://www.protocols.com/中国协议分析网: http://www.cnpaf.net/全球voip联…

第1章第1节练习题8 顺序表循环移位

问题描述 描述1&#xff1a;已知在一维数组A[mn]中依次存放着两个线性表(a1,a2,a3,...,am)和(b1,b2,b3,...,bn),试编写一个函数&#xff0c;将数组中两个顺序表互换&#xff0c;即将(b1,b2,b3,...,bn)放在(a1,a2,a3,...,am)的前面 描述2&#xff1a; 已知在一维数组A[mn]中依次…

无聊之胡思乱想 —— 关于CMM和CMMI

春节长假结束之后回到公司&#xff0c;我参加了有关CMMI的training。整个课程总有7个部分&#xff0c;涉及的内容十分广泛&#xff1a;从基于风险的项目管理到软件生命周期&#xff0c;再到项目计划和跟踪等等。而到上个星期为止&#xff0c;课程已经过半&#xff0c;而我对于C…

第1章第1节练习题9 查找指定值

问题描述 线性表(a1,a2,a3,...,an)中元素递增有序&#xff0c;且按顺序存储于计算机内。要求设计一算法完成用最少时间在表中查找数据值为x的元素&#xff1b;若找到&#xff0c;将其与后继元素位置交换&#xff1b;若找不到将其插入到表中&#xff0c;使表中的元素仍递增有序 …

SQL Server 中的模糊查询 LIKE

搜索条件中的模式匹配 LIKE 关键字搜索与指定模式匹配的字符串、日期或时间值。LIKE 关键字使用常规表达式包含值所要匹配的模式。模式包含要搜索的字符串&#xff0c;字符串中可包含四种通配符的任意组合。 通配符含义%包含零个或更多字符的任意字符串。_任何单个字符。[ ]指定…