顺序表编程题目-5

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

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

```cpp
# include <stdio.h>
#define MaxSize 10

typedef struct{
    int data[MaxSize];
    int length;
}SqList;


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]);
    }
}

//开始写主功能函数
bool DeleteStoT(SqList &L, int s, int t){
	int i,k=0;
	if(L.length==0||s>=t){
		return false;
	}
	for(i=0;i<L.length;i++){
		if(L.data[i]>=s&&L.data[i]<=t){
			k++;
		}
		else{
			L.data[i-k]=L.data[i];
		}
	}
	L.length-=k;
	return true;
}



int main(){
    printf("SqList_Test_4_From_soapcmd\n\n");
    //打印标题
    SqList L;
    //声明顺序表
    InitList(L);
    //初始化顺序表
    L.data[0] = 12;
    L.length++;
    L.data[1] = -11;
    L.length++;
    L.data[2] = 23;
    L.length++;
    L.data[3] = -4;
    L.length++;
    L.data[4] = -11;
    L.length++;
    L.data[5] = 9;
    L.length++;
    L.data[6] = -11;
    L.length++;
    //插入几个数据
    PrintList(L);
    //打印更改前顺序表

    printf("\n");
    //开始删除
    int s = -11;
    int t = 10;
    DeleteStoT(L, s, t);


    PrintList(L);
    //打印更改后顺序表
    return 0;
}


### 数据结构顺序表编程练习题目 以下是关于数据结构顺序表编程练习题,结合了相关引用中的内容[^1]以及常见算法设计需求: --- #### 题目 1: 合并两个有序数组 给定两个有序数组 `a` 和 `b`,设计一个函数将它们合并为一个新的有序数组 `t`,要求时间复杂度尽可能低。 ```python def hebing(a, m, b, n, t): i, j, k = 0, 0, 0 while i < m and j < n: if a[i] < b[j]: t[k] = a[i] i += 1 else: t[k] = b[j] j += 1 k += 1 while i < m: t[k] = a[i] i += 1 k += 1 while j < n: t[k] = b[j] j += 1 k += 1 dst = 0 for src in range(1, k): if t[src] != t[dst]: dst += 1 t[dst] = t[src] return dst + 1 ``` --- #### 题目 2: 删除顺序表中的重复元素 给定一个顺序表 `nums`,设计一个函数删除其中的重复元素,使得每个元素只出现一次。返回修改后数组的新长度。 ```python def removeDuplicates(nums): if not nums: return 0 dst = 0 for src in range(1, len(nums)): if nums[src] != nums[dst]: dst += 1 nums[dst] = nums[src] return dst + 1 ``` --- #### 题目 3: 逆置顺序表 设计一个高效算法,将顺序表 `L` 的所有元素逆置,要求空间复杂度为 O(1)。 ```python class SqList: def __init__(self, data, length): self.data = data self.length = length def Reverse(L): for i in range(L.length // 2): temp = L.data[i] L.data[i] = L.data[L.length - i - 1] L.data[L.length - i - 1] = temp ``` --- #### 题目 4: 查找顺序表中的目标值 给定一个顺序表 `L` 和目标值 `target`,设计一个函数查找目标值在顺序表中的索引位置。如果目标值不存在,则返回 `-1`。 ```python def find_target(L, target): for i in range(L.length): if L.data[i] == target: return i return -1 ``` --- #### 题目 5: 插入元素到顺序表 给定一个顺序表 `L` 和一个新元素 `value`,设计一个函数将新元素插入到顺序表中,并保持顺序表的有序性。 ```python def insert_sorted(L, value): pos = 0 while pos < L.length and L.data[pos] < value: pos += 1 for i in range(L.length, pos, -1): L.data[i] = L.data[i - 1] L.data[pos] = value L.length += 1 ``` --- ### 总结 上述题目涵盖了顺序表的基本操作,包括合并、去重、逆置、查找和插入等。通过这些练习,可以更好地理解顺序表的操作机制及其在实际问题中的应用[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值