• 数据结构c++实现——线性表


    通过vector实现一个简单的线性表

    #include <iostream>
    #include <cstring>
    
    template <typename Type> class Vector {
    private:
        int size, length;
        Type *data;
    public:
        Vector(int input_size) {
            size = input_size;
            length = 0;
            data = new Type[size];  // 指向一段连续的Type类型的空间
        }
        ~Vector() {
            delete[] data;
        }
    };
    int main() {
        Vector<int> a(100);
        return 0;
    }

     实现插入元素的函数:

    bool insert(int loc, Type value);

    #include <iostream>
    #include <cstring>
    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;
            length = 0;
            data = new Type[size];
        }
        ~Vector() {
            delete[] data;
        }
        bool insert(int loc, Type value) {  // 实现插入元素到指定位置的函数
            if (loc < 0 || loc > length) {
                return false;
            }
            if (length >= size) {
                return false;
            }
            for (int i = length; i > loc; --i) {
                data[i] = data[i - 1];
            }
            data[loc] = value;
            length++;
            return true;
        }
    };
    int main() {
        Vector<int> a(2);
        cout << a.insert(1, 0) << endl;
        cout << a.insert(0, 1) << endl;
        cout << a.insert(2, 1) << endl;
        cout << a.insert(1, 2) << endl;
        cout << a.insert(0, 3) << endl;
        return 0;
    }

    添加扩容函数 : void expand();

    #include <iostream>
    #include <cstring>
    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;
            length = 0;
            data = new Type[size];
        }
        ~Vector() {
            delete[] data;
        }
        bool insert(int loc, Type value) {
            if (loc < 0 || loc > length) {
                return false;
            }
            if (length >= size) {
                // return false;
                expand();  // 调用扩容函数
            }
            for (int i = length; i > loc; --i) {
                data[i] = data[i - 1];
            }
            data[loc] = value;
            length++;
            return true;
        }
        // 请在下面实现扩容方法 expand
        void expand() {
            Type * old_data = data;  // 指向data空间首地址
            size = size * 2;
            data = new Type[size];
            for(int i=0; i < length; i++) {
                data[i] = old_data[i];
            }
            delete[] old_data;
            
        }
    };
    int main() {
        Vector<int> a(2);
        cout << a.insert(1, 0) << endl;
        cout << a.insert(0, 1) << endl;
        cout << a.insert(2, 1) << endl;
        cout << a.insert(1, 2) << endl;
        cout << a.insert(0, 3) << endl;
        return 0;
    }

    注意g++的编译语法是: 

    g++ -o [编译后的执行文件][空格][源文件]

  • 相关阅读:
    java 大数据比较两个list集合的差值
    service手动回滚
    mycat分库分表demo
    mysql集群搭建之读写分离
    Python 代码运行速度慢?用PyPy模块让你的速度起飞!
    大新闻!Python 之父重新出山,加入微软开发部
    附实战代码|告别OS模块,体验Python文件操作新姿势!
    Python九个最佳IDE集成开发环境,你用过吗?
    五个阶段让你成为Python专家,你确定不看看吗?
    制作交互式数据可视化图表,只需要一个Python库就能实现!
  • 原文地址:https://www.cnblogs.com/huangZ-H/p/12247780.html
Copyright © 2020-2023  润新知