以下是使用 C++ 编写的程序,实现了对有序向量的插入、删除和查找操作:

#include <iostream>
#include <vector>

using namespace std;

// 打印有序向量
void printVector(const vector<int>& vec) {
    for (int num : vec) {
        cout << num << " ";
    }
    cout << endl;
}

// 在有序向量中插入数值
void insertElement(vector<int>& vec, int num) {
    // 判断向量空间是否不够,进行自动扩容
    if (vec.size() == vec.capacity()) {
        vec.reserve(vec.capacity() * 2);
    }

    // 寻找插入位置
    int i = 0;
    while (i < vec.size() && vec[i] < num) {
        i++;
    }
    
    // 插入元素
    vec.insert(vec.begin() + i, num);
    
    // 输出插入后的有序向量
    printVector(vec);
}

// 从有序向量中删除指定数值
void deleteElement(vector<int>& vec, int num) {
    int count = 0; // 记录删除的元素数量
    
    // 循环删除等于num的元素
    for (auto it = vec.begin(); it != vec.end();) {
        if (*it == num) {
            it = vec.erase(it);
            count++;
        } else {
            ++it;
        }
    }
    
    // 输出删除后的有序向量
    if (count > 0) {
        printVector(vec);
    } else {
        cout << "无此元素" << endl;
    }
}

// 在有序向量中查找指定数值
void searchElement(const vector<int>& vec, int num) {
    int count = 0; // 记录等于num的元素数量
    int minRank = -1; // 最小秩
    
    // 循环查找
    for (int i = 0; i < vec.size(); i++) {
        if (vec[i] == num) {
            if (minRank == -1) {
                minRank = i;
            }
            count++;
        } else if (vec[i] > num) {
            break; // 因为是有序向量,所以后面的元素不可能等于num
        }
    }
    
    // 输出查找结果
    if (count > 0) {
        cout << "最小秩: " << minRank << ", 数量: " << count << endl;
    } else {
        cout << "无此元素" << endl;
    }
}

int main() {
    vector<int> vec;
    
    cout << "插入操作:" << endl;
    for (int i = 0; i < 10; i++) {
        int num;
        cout << "请输入第 " << i+1 << " 个数:";
        cin >> num;
        insertElement(vec, num);
    }
    
    cout << "删除操作:" << endl;
    while (true) {
        int num;
        cout << "请输入要删除的数(输入0结束):";
        cin >> num;
        
        if (num == 0) {
            break;
        }
        
        deleteElement(vec, num);
    }
    
    cout << "查找操作:" << endl;
    while (true) {
        int num;
        cout << "请输入要查找的数(输入0结束):";
        cin >> num;
        
        if (num == 0) {
            break;
        }
        
        searchElement(vec, num);
    }
    
    return 0;
}

这段程序实现了建立有序向量、插入操作、删除操作和查找操作。程序会根据用户的输入进行相应的操作,并输出每一次操作后的有序向量或结果。请注意,该程序假设用户输入的都是整数。

C++ 有序向量操作:插入、删除、查找

原文地址: https://www.cveoy.top/t/topic/OmG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录