Сравнить скорость динамического массива и односвязного списка
Нужно сравнить скорость динамического массива и односвязного списка, считывая 100 элементов. Если с динамическим массивом я как-то разобрался (хотя я сомневаюсь, что это правильно), то как сделать это со списком - понять не могу.
include <iostream>
#include<string>
#include <time.h>
using namespace std;
struct DynamicArray
{
int counter = 0;
public:
int size;
int * arr;
DynamicArray(int size_)
{
size = size_;
arr = new int[size];
}
void Push_front(int value)
{
int* newArr = new int[size + 1];
for (int j = 0, i = 1; j < size; j++, i++)
newArr[i] = arr[j];
newArr[0] = value;
delete[] arr;
size++;
arr = newArr;
}
~DynamicArray()
{
delete[] arr;
}
};
struct LinkedList {
struct Node {
int val;
Node* next;
Node(int _val) : val(_val), next(nullptr) {}
};
Node* first;
Node* last;
int len = 0;
LinkedList() : first(nullptr), last(nullptr) {}
bool is_empty() {
return first == nullptr;
}
void push_front(int key)
{
Node* node = new Node(key);
node->val = key;
node->next = first;
first = node;
len++;
}
void print() {
if (is_empty()) return;
Node* p = first;
while (p) {
cout << p->val << " ";
p = p->next;
}
cout << endl;
}
};
int main()
{
srand(time(NULL));
int size = 100;
clock_t start = clock();
DynamicArray arr(size);
for (int i = 0; i < size; i++)
{
arr.Push_front(i);
}
for (int i = 0; i < size; i++)
cout << arr.arr[rand() % size] << " ";
clock_t end = clock();
double seconds = (double(end - start)) / CLOCKS_PER_SEC;
cout << "\n\nDynamic array: " << seconds << " seconds.";
LinkedList l;
for (int i = 0; i < size; i++)
{
l.push_front(i);
}
for (int i = 0; i < size; i++)
//???
return 0;
}