zoukankan      html  css  js  c++  java
  • 数据结构——线性表的顺序表示(4)

    题目来源于王道2018数据结构考研复习指导线性表的综合练习

    编译环境:VS2015

    题目:从有序顺序表中删除其值在给定值s和t之间(要求s<t)的所有元素,如果s、t不合理或者顺序表为空则显示出错信息并退出运行。

    具体实现如下:

    #include<stdio.h>
    #include<stdlib.h>
    
    #define initSize 50
    
    typedef int ElementType;
    typedef struct {
        ElementType *data;
        int length;
        int maxSize;
    }SeqList;
    
    //初始化线性表
    void InitList(SeqList &L) {
        L.data = (ElementType*)malloc(sizeof(ElementType)*initSize);
        L.length = 0;
        L.maxSize = initSize;
    }
    //创建有序表
    void CreateList(SeqList &L, int n) {
        L.length = n;
        for (int i = 0;i < L.length;i++) {
                scanf_s("%d", &(L.data[i]));
        }
    }
    
    //删除定值s和t之间(要求s<t)的所有元素
    bool DeleteS_T(SeqList &L, int s, int t) {
        int m=0, n=0;//m记录小于s的元素的个数,n记录大于t的元素的个数。
        //判断合理性
        if ((s >= t) || (L.length == 0))
            return -1;
        //如果最后得到的顺序表需要包括边界值s、t,if条件注意加等号
        for (int i = 0;i < L.length;i++) {
            if (L.data[i] < s) {
                L.data[m] = L.data[i];
                m++;
            }
        }
        n = m;//题目要求的顺序表是有序的,所以找大于t的数直接从下标为m的开始找即可
        for (int j = m;j < L.length;j++) {
            if (L.data[j] >t) {
                L.data[n] = L.data[j];
                n++;
            }
        }
        L.length = n;
        return true;
    }
    
    //显示
    void ShowList(SeqList L) {
        for (int i = 0; i < L.length; i++){
            printf_s("%d  ",L.data[i]);
        }
    }
    
    int main() {
        SeqList L;
        int length, s,t;
        InitList(L);
        printf_s("输入表的长度:");
        scanf_s("%d", &length);
        printf_s("
    输入初始值:");
        CreateList(L, length);
        printf_s("输入要删除的数字范围区间:");
        scanf_s("%d %d", &s,&t);
        DeleteS_T(L, s,t);
        printf_s("
    删除后的顺序表的元素如下:");
        ShowList(L);
        printf_s("
    ");
        system("pause");
        return 0;
    }

    测试结果:

  • 相关阅读:
    mybatis date类型比较
    搭建 c 语言环境 1_centos6 minimal 配置 c/c++ 编译环境
    2_eclipse配置c/c++环境
    1_eclipse导入hibernate 的DTD 文件
    1_eclipse配置c/c++开发环境
    2_修改Eclipse里面的快捷键
    1_修改注释内容
    8_对象创建、static 关键字、静态变量和成员变量的区别、文档
    7_匿名对象、封装(private)、this 关键字、构造方法
    6_面向对象基础、成员变量和局部变量的区别
  • 原文地址:https://www.cnblogs.com/abyss1114/p/7283765.html
Copyright © 2011-2022 走看看