Tossaporn Saengja

Dynamic Array

คำอธิบาย

แนวทาง

การเพิ่มข้อมูล

https://media.geeksforgeeks.org/wp-content/uploads/dynamicarray.png

Delete Element

https://media.geeksforgeeks.org/wp-content/uploads/DeleteArray.png

ตัวอย่าง implementation แบบไม่ใช้ vector

#include <bits/stdc++.h>

using namespace std;

int cnt = 0;
int sz = 1;
int *A = new int[sz];

void add(int x) {
  if (cnt == sz) {
    sz *= 2;
    int *tmp = new int[sz];
    for (int i = 0; i < cnt; i++) {
      tmp[i] = A[i];
    }
    free(A);
    A = tmp;
  }
  A[cnt++] = x;
}

void remove() { cnt--; }

void removeAt(int j) {
  for (int i = j; i < cnt; i++) {
    A[i] = A[i + 1];
  }
  cnt--;
}

void print() {
  printf("sz = %d, cnt = %d\n", sz, cnt);
  for (int i = 0; i < cnt; i++) {
    printf("%d ", A[i]);
  }
  printf("\n");
}

int main() {
  add(1);
  print();
  add(2);
  print();
  add(3);
  print();
  add(4);
  add(5);
  print();
  add(6);
  print();
  remove();
  print();
  removeAt(3);
  print();
}