Administrator
发布于 2024-09-28 / 23 阅读
0
0

数据结构

C++数据结构

我的个人博客 Sheep
https://sheep317.xyz
Email:[email protected]*


第一次作业

代码

#include "iostream" // 引入输入输出流库,提供输入输出功能

// 定义类 aa
class aa {
    private:
        int a[10];  // 用于存储元素的数组,大小为 10
        int len;    // 当前数组中元素的数量

    public:
        // 构造函数,初始化数组长度为 0
        aa() {
            len = 0;
        }

        // 搜索元素,返回该元素在数组中的索引,找不到返回 -1
        int f(int x) {
            for (int i = 0; i < len; i++) {
                if (a[i] == x) return i;  // 找到元素返回其索引
            }
            return -1;  // 未找到返回 -1
        }

        // 插入元素到数组末尾
        void insert(int x) {
            a[len] = x;  // 将元素添加到数组的下一个空位
            len++;       // 增加数组长度
        }

        // 删除数组中的指定元素
        void del(int x) {
            int k = f(x);  // 查找要删除元素的索引
            // 将删除元素后面的元素前移一位
            for (int i = k + 1; i < len; i++) {
                a[i - 1] = a[i];
            }
            len--;  // 减少数组长度
        }

        // 输出数组中的所有元素
        void output() {
            for (int i = 0; i < len; i++) {
                std::cout << a[i] << " ";  // 输出每个元素
            }
            std::cout << std::endl;  // 换行
        }

        // 在数组的第一个位置插入元素,其他元素后移
        void add_in_zero(int x) {
            // 将所有元素向后移动一位
            for (int i = len - 1; i >= 0; i--) {
                a[i + 1] = a[i];
            }
            a[0] = x;  // 将新元素放在第一个位置
            len++;      // 增加数组长度
        }

        // 在指定位置插入元素,其他元素后移
        void add_in_k(int x, int k) {
            // 将指定位置之后的元素后移
            for (int i = len - 1; i >= k - 1; i--) {
                a[i + 1] = a[i];
            }
            a[k - 1] = x;  // 在指定位置插入元素
            len++;          // 增加数组长度
        }
};
int main() {
    int b[] = {11, 12, 13, 41, 51};  // 初始化一个整数数组
    aa w;  // 创建 aa 类的对象

    // 将数组 b 中的元素插入到 w 中
    for (int i = 0; i < 5; i++) {
        w.insert(b[i]);
    }

    w.output();  // 输出当前数组中的元素

    w.del(12);   // 删除元素 12
    w.output();  // 输出删除后的数组

    w.add_in_zero(1);  // 在数组的第一个位置插入元素 1
    w.output();        // 输出插入后的数组

    int x;
    std::cout << "请输入你想插入的位置:";
    std::cin >> x;  // 输入要插入的数组位置

    w.add_in_k(2, x);  // 在指定位置插入元素 2
    w.output();        // 输出插入后的数组

    system("pause");  // 暂停程序(仅在 Windows 环境中有效)
}

运行结果

 2024-09-22 165848.png

第二次作业

代码

#include "iostream" // 引入输入输出流库,提供输入输出功能

// 模板类定义,T 为类型参数,n 为整型模板参数
template <class T ,int n>
class list {
    private:
        T *a;     // 指向存储元素的数组的指针
        int len;  // 当前数组中元素的数量

    public:
        // 构造函数,初始化数组并将元素数量设为 0
        list() {
            a = new T[n]; // 动态分配大小为 n 的数组
            len = 0;      // 初始长度为 0
        }

        // 添加元素到数组末尾
        void add(T x) {
            a[len] = x;  // 将元素添加到数组的下一个空位
            len++;       // 增加数组中的元素数量
        }

        // 在指定位置插入元素
        void insert(T x) {
            int k; // 用于存储插入位置
            std::cout << "请输入要插入的位置:"; 
            std::cin >> k; // 输入插入位置

            // 将插入位置之后的元素向后移动一位
            for (int i = len - 1; i >= k - 1; i--) {
                a[i + 1] = a[i];
            }

            a[k - 1] = x; // 在指定位置插入元素
            len++;        // 增加元素数量
        }

        // 搜索元素,返回元素在数组中的位置,未找到则返回 -1
        int serach(T x) {
            for (int i = 0; i < len; i++) {
                if (a[i] == x) return i; // 找到元素则返回位置
            }
            return -1; // 未找到返回 -1
        }

        // 删除指定的元素
        void del(T x) {
            for (int i = serach(x); i < len; i++) {
                a[i] = a[i + 1]; // 删除元素并将后续元素向前移动
            }
            len--; // 减少数组中的元素数量
        }

        // 输出数组中的所有元素
        void output() {
            for (int i = 0; i < len; i++) {
                std::cout << a[i] << " "; // 输出每个元素
            }
            std::cout << std::endl; // 换行
        }
};
int main() {
    list<int,10> a; // 创建类型为 int,大小为 10 的 list 对象
    int b[5] = {1, 3, 5, 4, 6}; // 初始化一个整数数组

    // 将数组 b 中的元素添加到 list 对象中
    for (int i = 0; i < sizeof(b) / sizeof(b[0]); i++) {
        a.add(b[i]);
    }

    a.output(); // 输出当前 list 中的元素

    int x; 
    std::cout << "请输入想要插入的数字:";
    std::cin >> x; // 输入想要插入的元素

    a.insert(x); // 将输入的数字插入 list
    a.output();  // 输出插入后的 list

    std::cout << "x的" << "位置为:" << a.serach(x) << std::endl; // 搜索 x 的位置并输出

    a.del(x); // 删除 x
    a.output(); // 输出删除后的 list

    system("pause"); // 暂停程序(仅在 Windows 环境中有效)
}

运行结果

 2024-09-24 130618.png


评论