linked-list-random-node 1.0.0
Linked List Random Node
Loading...
Searching...
No Matches
main.cpp
Go to the documentation of this file.
1#include <iostream>
2#include <vector>
3
4using namespace std;
5
9struct ListNode
10{
11 int val;
13 ListNode() : val(0), next(nullptr) {}
14 ListNode(int x) : val(x), next(nullptr) {}
15 ListNode(int x, ListNode *next) : val(x), next(next) {}
16};
17
19{
20public:
21 int length;
22 vector<ListNode*>* array;
23
25 {
26 length = 0;
27 ListNode* ptr = head;
28 while (ptr != NULL)
29 {
30 length++;
31 ptr = ptr->next;
32 }
33 array = new vector<ListNode*>(length);
34 ptr = head;
35 for (int i = 0; i < length; ++i)
36 {
37 (*array)[i] = ptr;
38 ptr = ptr->next;
39 }
40 srand(time(NULL));
41 }
42
44 {
45 if (array)
46 delete array;
47 }
48
50 {
51 return (*array)[rand() % length]->val;
52 }
53};
54
56{
57 if (n < 1)
58 return NULL;
59 ListNode* head = new ListNode(0, NULL);
60 ListNode* ptr = head;
61 for (int i = 1; i <= n; ++i)
62 {
63 ptr->next = new ListNode(i, NULL);
64 ptr = ptr->next;
65 }
66 return head;
67}
68
69void print_n_randoms(Solution& sol, int n)
70{
71 for (int i = 1; i <= n; ++i)
72 cout << "Random " << i << ": " << sol.getRandom() << endl;
73 return;
74}
75
77{
78 ListNode* tmp = ptr->next;
79 if (tmp)
80 delete_list(tmp);
81 delete ptr;
82}
83
84int main()
85{
86 ListNode* list = create_list(30);
87 Solution sol(list);
88 print_n_randoms(sol, 30);
89 delete_list(list);
90 return 0;
91}
int getRandom()
Definition main.cpp:49
Solution(ListNode *head)
Definition main.cpp:24
~Solution()
Definition main.cpp:43
vector< ListNode * > * array
Definition main.cpp:22
int length
Definition main.cpp:21
ListNode * create_list(int n)
Definition main.cpp:55
void print_n_randoms(Solution &sol, int n)
Definition main.cpp:69
int main()
Definition main.cpp:84
void delete_list(ListNode *ptr)
Definition main.cpp:76
Definition for singly-linked list.
Definition main.cpp:10
int val
Definition main.cpp:11
ListNode(int x)
Definition main.cpp:14
ListNode()
Definition main.cpp:13
ListNode * next
Definition main.cpp:12
ListNode(int x, ListNode *next)
Definition main.cpp:15