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

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

时间:2020-03-12 23:21:34      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:lis   int   class   ret   can   ini   scan   结构   tde   

 问题描述:

顺序表,默认输入递增数列,设定删除区间,删除大于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("您输入的递增表是:\n");
64     for (i = L.elem; i < L.elem + L.length; i++) printf("%d ", *i);   //打印顺序表
65     printf("\n确定MIN和MAX的值:\n");
66     scanf("%d %d", &MIN, &MAX);
67     ListDelete_Sq(LL, MIN, MAX);
68     printf("删除所指定区间后:\n");
69     for (i = L.elem; i < L.elem + L.length; i++) printf("%d ", *i);   //打印顺序表
70     printf("\n此次时间复杂度是:O(n)");
71     free(L.elem);
72     return 0;
73 
74 }

 

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

标签:lis   int   class   ret   can   ini   scan   结构   tde   

原文地址:https://www.cnblogs.com/confrontmisery/p/12423718.html

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