/**
* 用顺序表实现 王道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;
}
王道书P18 T4(静态顺序表实现)
于 2022-07-01 21:29:08 首次发布