王道书P18 T4(静态顺序表实现)

/**
 * 用顺序表实现 王道P18 T4
 *
 * ①算法思想:
 * 设置两个变量i和k且都从0开始递增,当i位置上的数字满足大于s并小于t的条件时,将i位置的数字覆盖到k位置上,i和k各+1;
 * 当不满足时,i+1用于扫描下一个,k不变,以此类推。
 * 以上过程在原数组中就可以完成,不需要开辟任何新的数组空间。
 *
 * ②数据结构:
 * typedef struct{
 *     int data[MaxSize];
 *     int length;
 * }SqList;
 *
 * ③算法设计
 */

#include <stdio.h>
#define MaxSize 100
typedef struct{
    int data[MaxSize];
    int length;
}SqList;

void DeleteS_T(SqList &L,int s,int t){
    if(s >= t - 1 || L.length == 0){
        printf("错误!\n");
        return;
    }
    int k = 0;
    for (int i = 0; i < L.length; i++) {
        if(L.data[i] <= s || L.data[i] >= t)
            L.data[k++] = L.data[i];//相当于L.data[k] = L.data[i];k++;
    }
    L.length = k;//为什么不是k + 1 ?因为执行最后一个for循环时k++了
}

//以下用于测试
void InitList(SqList &L){
    for (int i = 0; i < MaxSize; ++i) {
        L.data[i] = 0;
    }
    L.length = 0;
}

void PrintList(SqList L){
    for (int i = 0; i < L.length; ++i) {
        printf("%d ",L.data[i]);
    }
    printf("\n");
}

int main(){
    SqList L1 = {{1,2,3,4,5,6,7,8},L1.length = 8};
    PrintList(L1);
    DeleteS_T(L1,3,5);
    PrintList(L1);
    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值