顺序表——删除设定的MIN,MAX之间的数据

Posted confrontmisery

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序表——删除设定的MIN,MAX之间的数据相关的知识,希望对你有一定的参考价值。

 问题描述:

顺序表,默认输入递增数列,设定删除区间,删除大于MIN并且小于MAX的数据

基础:visual studio 2017,用cpp写的c

源码呈现:

 1 #include <stdio.h>
 2 //-----线性表的动态分配顺序存储结构-----
 3 #define LIST_INIT_SIZE 20   // 线性表存储空间的初始分配量
 4 #define LISTINCREMENT  10   // 线性表存储空间的分配增量
 5 typedef struct 
 6 {
 7     int * elem;     //存储空间的地址
 8     int length;     //当前长度
 9     int listsize;   //当前分配的存储容量
10 }SqList;
11 
12 //构造一个空的线性表
13 int InitList_Sq(SqList * L) 
14 {
15     L->elem = (int *)malloc(LIST_INIT_SIZE * sizeof(int));
16     if (! L->elem) return 0;       //存储分配失败
17     L->length = 0;                 //空表长度为0
18     L->listsize = LIST_INIT_SIZE;  //初始存储容量
19     return 1;
20 }
21 
22 //删除指定区间的数据元素
23 void ListDelete_Sq(SqList * L, int min, int max) 
24 {
25     int * i, * j;
26     for (i = L->elem; i < L->elem + L->length; i++)
27     {
28         if ( * i > min && * i < max)
29         {
30             for (j = i; j < L->elem + L->length; j++)
31                 * j = * (j + 1);
32             L->length--;
33             i--;
34         }
35     }
36 }
37 
38 
39 //建立顺序表(默认递增输入)
40 int CreatList_Sq(SqList * L, int n)
41 {
42     int i;
43     L->elem = (int * )malloc(sizeof(int) * LIST_INIT_SIZE);
44     if (! L->elem) return 0 ;          
45     else
46     {
47         for (i = 0; i < n; i++)
48         {
49             scanf("%d", &L->elem[i]);
50             L->length++;
51         }
52     }
53     return 1;
54 }
55 
56 int main() 
57 {
58     SqList L;
59     SqList * LL = &L;
60     InitList_Sq(LL);
61     CreatList_Sq(LL, 10);
62     int *MIN, *MAX, * i;
63     printf("您输入的递增表是:
");
64     for (i = L.elem; i < L.elem + L.length; i++) printf("%d ", *i);   //打印顺序表
65     printf("
确定MIN和MAX的值:
");
66     scanf("%d %d", &MIN, &MAX);
67     ListDelete_Sq(LL, MIN, MAX);
68     printf("删除所指定区间后:
");
69     for (i = L.elem; i < L.elem + L.length; i++) printf("%d ", *i);   //打印顺序表
70     printf("
此次时间复杂度是:O(n)");
71     free(L.elem);
72     return 0;
73 
74 }

 

以上是关于顺序表——删除设定的MIN,MAX之间的数据的主要内容,如果未能解决你的问题,请参考以下文章

第02次作业-线性表

将 find-min/find-max 堆栈推广到任意顺序统计?

PTA 线性表元素的区间删除

mysql 删除两个同结构表,两个相同列数据.

C语言数据结构顺序表的查找/插入/删除操作

博客作业02---线性表