01.04作业

#include 
#include 
using namespace std;

// 定义顺序表的模板类
template 
class Sqlist
{
    private:
        T *data;                // 顺序表的数据指针
        int size;               // 顺序表的当前大小
        int capa;           // 顺序表的容量
    public:
        // 构造函数,创建一个顺序表
        Sqlist(int init)
        {
            data = new T[init];
            size = 1;
            capa = init;
        }

        // 析构函数,释放顺序表的内存
        ~Sqlist()
        {
            delete[] data;
        }

        // 判断顺序表是否已满
        bool isFull()
        {
            return size == capa;
        }

        // 判断顺序表是否为空
        bool isEmpty()
        {
            return size == 0;
        }

        // 在顺序表的末尾插入元素
        void pushBack(T value)
        {

            data[size] = value;
            size++;
        }

        // 从顺序表的末尾删除元素
        void popBack()
        {
            if (!isEmpty())
            {
                size--;
            }
        }

        // 遍历顺序表的所有元素
        void print()
        {
            for (int i = 0; i < size; i++)
            {
                cout << data[i] << " ";
            }
            cout << endl;
        }

        // 在顺序表的指定下标位置插入元素
        void insert(int index, T value)
        {
            if (index < 0 || index > size)
            {
                cout << "Invalid index" << endl;
                return;
            }

            for (int i = size; i > index; i--) {
                data[i] = data[i - 1];
            }
            data[index] = value;
            size++;
        }

        // 删除顺序表的指定下标位置的元素
        void erase(int index)
        {
            if (index < 0 || index >= size)
            {
                cout << "Invalid index" << endl;
                return;
            }
            for (int i = index; i < size - 1; i++)
            {
                data[i] = data[i + 1];
            }
            size--;
        }

        // 修改顺序表的指定下标位置的元素值
        void update(int index, T value)
        {
            if (index < 0 || index >= size)
            {
                cout << "Invalid index" << endl;
                return;
            }
            data[index] = value;
        }

        // 在顺序表中查找指定元素的下标位置,存在则返回,否则返回-1
        int find(T value)
        {
            for (int i = 0; i < size; i++)
            {
                if (data[i] == value)
                {
                    return i;
                }
            }
            return -1;
        }

        // 在顺序表中按元素值删除指定元素,存在则删除,否则不操作
        void remove(T value)
        {
            int index = find(value);
            if (index != -1)
            {
                erase(index);
            }
        }
};

int main() {
    Sqlist list(5);

    // 插入元素
    list.pushBack(10);
    list.pushBack(20);
    list.pushBack(30);
    list.pushBack(40);
    list.pushBack(50);

    // 打印顺序表的内容
    list.print();

    // 查找元素的下标位置
    int index = list.find(30);
    if (index != -1)
    {
        cout << "元素 30 在顺序表中的下标位置为:" << index << endl;
    } else
    {
        cout << "元素 30 在顺序表中不存在" << endl;
    }
    // 删除指定下标位置的元素
    list.erase(2);
    // 修改指定下标位置的元素值
    list.update(1, 100);
    // 打印顺序表的内容
    list.print();
    // 按元素值删除元素
    list.remove(40);
    // 打印顺序表的内容
    list.print();

    return 0;
}

你可能感兴趣的:(c++)