数据结构 顺序表c++简单实现

本文详细介绍了如何使用C++编程语言实现顺序表数据结构,涵盖了相关的关键概念、核心代码示例及操作方法,旨在帮助读者理解并掌握顺序表的基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <bits/stdc++.h>
using namespace std;
const int maxSize = 100;
template <class T>
class seqList
{
private:
    int length;
    T data[maxSize];

public:
    seqList() { length = 0; }        //无参构造函数
    seqList(T a[], int n);           //有参构造函数
    ~seqList(){};                    //析构函数
    int Length() { return length; }; //获取长度
    T get(int i);                    //根据下标获取元素
    int locate(T i);                 //根据元素值定位下标
    void insert(int i, T x);         //插入
    T Delete(int i);                 //删除
    void printList();                //遍历打印
};
template <class T>
seqList<T>::seqList(T a[], int n)
{
    if (n <= maxSize)
    {
        for (int i = 0; i < n; i++)
        {
            data[i] = a[i];
        }
        length = n;
    }
    else
    {
        cout << "error" << endl;
    }
}

template <class T>
T seqList<T>::get(int i)
{
    return data[i];
}
template <class T>
int seqList<T>::locate(T i)
{
    for (int j = 0; j < length; j++)
    {
        if (data[j] == i)
        {
            return j;
        }
    }
    cout << "not found" << endl;
    return -1;
}
template <class T>
void seqList<T>::insert(int i, T x)
{
    if (length >= maxSize)
    {
        cout << "error" << endl;
        return;
    }
    for (int j = length - 1; j >= i; j--) //从后往前,往后移一位;第一次想到的空间开销大..太菜了
    {
        data[j + 1] = data[j];
    }
    length++;
    data[i] = x;
    // int temp[length - i];
    // int t = i;
    // for (int j = 0; j < length - i; j++)
    // {
    //     temp[j] = data[t];
    //     t++;
    // }
    // data[i] = x;
    // for (int j = 0; j < length + 1; j++)
    // {
    //     data[i + 1] = temp[j];
    //     i++;
    // }
    // length++;
}
template <class T>
T seqList<T>::Delete(int i)
{
    T temp = data[i];
    for (int j = i; j < length - 1; j++)
    {
        data[j] = data[j + 1];
    }
    length--;
    return temp;
}
template <class T>
void seqList<T>::printList()
{
    for (int i = 0; i < length; i++)
    {
        cout << data[i] << endl;
    }
}
int main()
{
    int n = 10;
    int a[n];
    for (int i = 0; i < n; i++)
    {
        a[i] = i + 1;
    }
    seqList<int> student(a, n);
    student.printList();
    cout << "-------------------" << endl;
    student.insert(0, 1);
    student.printList();
    cout << "-------------------" << endl;
    student.Delete(5);
    student.printList();
    system("pause");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值