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
4
using namespace
std;
5
9
struct
ListNode
10
{
11
int
val
;
12
ListNode
*
next
;
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
18
class
Solution
19
{
20
public
:
21
int
length
;
22
vector<ListNode*>*
array
;
23
24
Solution
(
ListNode
* head)
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
43
~Solution
()
44
{
45
if
(
array
)
46
delete
array
;
47
}
48
49
int
getRandom
()
50
{
51
return
(*
array
)[rand() %
length
]->val;
52
}
53
};
54
55
ListNode
*
create_list
(
int
n)
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
69
void
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
76
void
delete_list
(
ListNode
* ptr)
77
{
78
ListNode
* tmp = ptr->
next
;
79
if
(tmp)
80
delete_list
(tmp);
81
delete
ptr;
82
}
83
84
int
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
}
Solution
Definition
main.cpp:19
Solution::getRandom
int getRandom()
Definition
main.cpp:49
Solution::Solution
Solution(ListNode *head)
Definition
main.cpp:24
Solution::~Solution
~Solution()
Definition
main.cpp:43
Solution::array
vector< ListNode * > * array
Definition
main.cpp:22
Solution::length
int length
Definition
main.cpp:21
create_list
ListNode * create_list(int n)
Definition
main.cpp:55
print_n_randoms
void print_n_randoms(Solution &sol, int n)
Definition
main.cpp:69
main
int main()
Definition
main.cpp:84
delete_list
void delete_list(ListNode *ptr)
Definition
main.cpp:76
ListNode
Definition for singly-linked list.
Definition
main.cpp:10
ListNode::val
int val
Definition
main.cpp:11
ListNode::ListNode
ListNode(int x)
Definition
main.cpp:14
ListNode::ListNode
ListNode()
Definition
main.cpp:13
ListNode::next
ListNode * next
Definition
main.cpp:12
ListNode::ListNode
ListNode(int x, ListNode *next)
Definition
main.cpp:15
main.cpp
Generated by
1.9.8