我是靠谱客的博主 儒雅花瓣,最近开发中收集的这篇文章主要介绍顺序表,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  • 1000ms
  •  32768K

通过前面几节,我们就学完了顺序表的查找、删除以及遍历操作啦。还是和之前一样,现在需要你独立的去实现一遍这些代码,我们会给出基本的框架,你只要在相应的方法内完善它们就好了。

相信你已经了解了我们的评判机制,我们会给出几组输入数据,通过你的程序相应的得到一些输出数据,只要你的输出数据和我们标准的输出一致就能通过这道难题了。如果遇到困难就重新温习前面的内容吧,一定不要直接利用之前的代码!

我们已经建立好了一个容量为 2020 的顺序表,你需要对其执行一系列的操作。

输入格式

第一行输入一个正整数 mm1 leq m leq 1001m100),代表一共有 mm 个操作。

接下来输入 mm 行,每行首先输入一个整数 tt,分别代表以下操作:

  • t = 1t=1,代表插入操作,输入两个整数 aa和 bb0 leq a,b leq 1000a,b100),表示在 aa 的位置上擦入元素 bb,如果插入成功输出success,否则输出failed
  • t = 2t=2,代表删除操作,输入一个整数 aa0 leq a leq 1000a100),删除位置 aa 上的元素,如果删除成功输出success,否则输出failed
  • t = 3t=3,代表查找操作,输入一个整数 aa0 leq a leq 1000a100),查找元素值为 aa 的元素,如果查找成功输出success,否则输出failed
  • t = 4t=4,代表遍历操作,输出当前顺序表的所有元素。

输出格式

对应每个操作,输出结果。对于前三个操作,如果操作成功输出success,否则输出failed;对于第四个操作,从下标为 00 的位置开始输出当前顺序表的所有元素,每两个整数之间一个空格,最后一个整数后面没有空格。

样例输入

9
1 0 1
1 5 2
1 1 2
1 2 3
3 2
2 2
2 9
3 3
4

样例输出

success
failed
success
success
success
success
failed
failed
1 2

#include <iostream>
#include <cstring>
using std::cin;
using std::cout;
using std::endl;
template <typename Type> class Vector {
private:
    int size,length;
    Type* data;
public:
    Vector(int input_size) {
        size = input_size;
        data = new Type[size];
        length = 0;
    }
    ~Vector() {
        delete[] data;
    }
    bool insert(int loc,Type val) {
        if(loc<0 || loc>length) {cout << "failed" << endl; return false;}
        if(length >= size) expand();
        for(int i=length;i>loc;i--){
            data[i] = data[i-1];
        }
        data[loc] = val;
        length++;
        cout << "success" << endl;
        return true;
    }
    void expand() {
        Type* old_data = data;
        size *=2;
        data = new Type[size];
        for(int i=0;i<length;i++){
            data[i] = old_data[i];
        }
        delete[] old_data;
    }
    bool search(const Type &val) {
        for(int i=0;i<length;i++){
            if(data[i] == val) {cout << "success" << endl; return true;}
        }
        cout << "failed" << endl;
        return false;
    }
    bool remove(int index) {
        if(index<0 || index>=length) {cout << "failed" << endl; return false;}
        for(int i=index+1;i<length;i++) {
            data[i-1] = data[i];
        } 
        length--;
        cout << "success" << endl;
        return true;
    }
    void print() {
        for(int i=0;i<length;i++){
            if(i) cout << " ";
            cout << data[i];
        }
        cout << endl;
    }
};
int main() {
    Vector<int> v(20);
    int n;
    cin >> n;
    while(n--) {
        // 请在此处完成代码
        int ord,a=0,b=0;
        cin >> ord;
        if(ord==1){
            cin >> a >> b;
            v.insert(a,b);
        }else if(ord==2){
            cin >> a;
            v.remove(a);
        }else if(ord==3){
            cin >> a;
            v.search(a);
        }else if(ord==4) v.print();
    }
    return 0;
}



最后

以上就是儒雅花瓣为你收集整理的顺序表的全部内容,希望文章能够帮你解决顺序表所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部