数据结构(java版)SeqList(顺序表)

SeqList(顺序表)

代码部分:

public class SeqList<T> {

    protected Object[] element;//声明一个对象数组
    protected int len;//声明一个顺序表长度,记载实际元素个数

    //构造函数1,固定长度
    public SeqList(int size) {
        this.element = new Object[size];
        this.len = 0;
    }

    //构造函数2,默认长度,构造方法重载
    public SeqList() {
        this(64);
    }

    //构造函数3,由values数组提供元素
    public SeqList(T[] values) {
        this(values.length);
        for (int i = 0; i < values.length; i++) {
            this.element[i] = values[i];
        }
        this.len = element.length;
    }

    public boolean isEmpty() {
        return this.len == 0;
    }

    public int length() {
        return len;
    }

    public T get(int i) {
        return i >= 0 && i < this.len ? (T) this.element[i] : null;
    }

    public void set(int i, T x) {
        if (x == null) {
            throw new NullPointerException("x==null");
        } else if (i >= 0 && i < this.len) {
            this.element[i] = x;
        } else {
            throw new IndexOutOfBoundsException(String.valueOf(i));
        }
    }

    public int insert(int i, T x) {
        if (x == null) {
            throw new NullPointerException("x==null");
        } else {
            if (i < 0) {
                i = 0;
            }

            if (i > this.len) {
                i = this.len;
            }

            Object[] source = this.element;
            int j;
            if (this.len == this.element.length) {
                this.element = new Object[source.length * 2];

                for (j = 0; j < i; ++j) {
                    this.element[j] = source[j];
                }
            }

            for (j = this.len - 1; j >= i; --j) {
                this.element[j + 1] = source[j];
            }

            this.element[i] = x;
            ++this.len;
            return i;
        }
    }

    public int insert(T x) {
        return this.insert(this.len, x);
    }

    public T remove(int i) {
        if (this.len > 0 && i >= 0 && i < this.len) {
            T old = (T) this.element[i];

            for (int j = i; j < this.len - 1; ++j) {
                this.element[j] = this.element[j + 1];
            }

            this.element[this.len - 1] = null;
            --this.len;
            return old;
        } else {
            return null;
        }
    }

    public void removeAll() {
        this.len = 0;
    }

    public int search(T key) {
        for (int i = 0; i < this.len; ++i) {
            if (key.equals(this.element[i])) {
                return i + 1;
            }
        }
        return -1;
    }

    protected void look() {
        if (element != null) {
            System.out.println("");
            for (int i = 0; i < element.length; i++) {
                System.out.print(" " + element[i]);
            }
        }
    }


}

写在最后:

仅为学习阶段记录写过的代码,方便自己查找,初出茅庐,有不完善的地方烦请指正,如有继承类可查阅数据结构其他博文。

这个错误通常表示你在C++编程尝试给一个`SeqList<T>`型的变量赋值,但是编译器找不到对应的赋值操作符(`operator=`)的定义。`operator=`是一个特殊的成员函数,用于实现对象之间的赋值操作,它通常会在定义自动生成,如果直接声明 `operator=` 而没有提供实现,编译器就无法找到。 这种情况可能是由于以下几个原因: 1. **缺少显式定义**:如果你试图覆盖`SeqList`的默认赋值行为,但尚未在`SeqList`明确提供一个`operator=`函数,你需要自己编写该函数。 2. **模板问题**:如果`SeqList`是一个模板,确保你已经在模板定义正确地实现了赋值操作符。 3. **命名冲突**:检查是否有其他同名的函数干扰了`operator=`的查找,特别是在头文件。 4. **包含错误**:确保所有必要的头文件都包含了,并且赋值操作符是在正确的上下文定义的。 5. **私有访问权限**:如果`operator=`是的私有成员,那么从外部是无法直接调用的,除非提供一个公有的友元函数。 要解决这个问题,你需要查看你的源代码,确认`operator=`是否正确实现并在需要的地方包含。如果没有实现,你需要添加一个像下面这样的函数定义: ```cpp template <typename T> SeqList<T>& SeqList<T>::operator=(const SeqList<T>& other) { // 实现赋值操作... } ``` 然后再次编译,看看错误是否消失。如果有更多疑问,可以提供具体的错误信息以便更准确地定位问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AntyRia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值