在最后一个有效元素后插入一个数据,
    当然,在此之前需要判断顺序表有没有满,如果满了需要先扩容再插入。
    判断顺序表满没满很简单,就看他的有效元素个数是否与数组长度相等,如果相等就代表顺序表满了。
    顺序表的“指针”是指向最后一个元素的后一个空间
    image.png

    1. public class SeqList {
    2. public int[] elem;
    3. public int size;
    4. }
    5. public class SeqList {
    6. public int[] elem;//数据域引用
    7. public int size;//有效元素个数
    8. //初始化顺序表
    9. public void initSeqList(){
    10. this.elem = new int[10];
    11. }
    12. //每次使用新的顺序表还需要自己构造对象调用初始化方法,太麻烦了,我们让顺序表在执行构造方法阶段就完成顺序表的初始化。
    13. public SeqList() {
    14. this.initSeqList();
    15. }
    16. //判断顺序表是否满
    17. public boolean isFull() {
    18. return this.size == this.elem.length;
    19. }
    20. //2.3顺序插入元素
    21. public void seqAdd(int value) {
    22. if (this.elem == null) {
    23. this.initSeqList();
    24. }
    25. if (this.isFull()) {
    26. this.elem = Arrays.copyOf(this.elem, 2 * this.elem.length);//扩容
    27. }
    28. this.elem[this.size] = value;
    29. this.size++;
    30. }
    31. //2.4指定位置插入数据
    32. // 在 pos 位置新增元素
    33. public void add(int pos, int data) {
    34. if (this.elem == null) {
    35. this.initSeqList();
    36. }
    37. if (pos < 0 || pos > this.size) {
    38. System.out.println("插入位置非法!");
    39. return;
    40. }
    41. if (isFull()) {
    42. this.elem = Arrays.copyOf(this.elem, 2 * this.elem.length);
    43. }
    44. for (int i = size - 1; i >= pos; i--) {
    45. this.elem[i+1] = this.elem[i];
    46. }
    47. this.elem[pos] = data;
    48. this.size++;
    49. }
    50. }