-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME.txt
57 lines (44 loc) · 2.86 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
-----------------------------------------------
List description [5th project]
-----------------------------------------------
I have a new goal: I want to try to write the design and contents of the repository so that the person who comes here for the first time understands how it happens.
Autor: (Michael Krapchatov) 11.2021 I would be glad if you write issue
THE PROGRAM SHOULD SOLVE THE FOLLOWING PROBLEMS:
-----
[ 1 ] CREATING AN EMPTY LIST TO GET STARTED
-----
we create the first parent cell {0, 0, 0} and a list of cells {-1, 0, index + 1} - the standard kind of free cells in the list, note that they are ALREADY connected to each other. - all this happens in the functions listCtor () and listChangeCapacity (), but we leave the last cell in the format {-1, 0, 0} - to show that the list of empty elements is complete.
{0, 0, 0}
{-1, 0, 2} this is what the list looks like
{-1, 0, 3} after () ()
{-1, 0, 4}
{-1, 0, 0} example (1)
-----
[ 2 ] INSERTING NEW EMPTY ELEMENTS
-----
after that it is worth solving the problem of filling the list with new elements. We have a variable (list->free) - a pointer to the first cell of the format {-1, 0, index + 1} - in example 1 it will be a cell with index 1. Then with each addition we make a new inserted cell final (tail-cell) and save index + 1, which used to be here {-1, 0, index + 1}, so that when adding the second next cell, we can put this saved index instead of 0
Insert (0, &list, 9) | Insert (1, &list, 9)
--> | -->
{ 0, 0, 0} { 0, 0, 0} | { 0, 0, 0} { 0, 0, 0 }
{-1, 0, 2} <free { 0, 9, 0} | { 0, 9, 0} { 0, 9, save_index} = 2
{-1, 0, 3} {-1, 0, 3} | {-1, 0, 3} <free { 1, 9, 0 } (we saved 3)
{-1, 0, 4} {-1, 0, 4} | {-1, 0, 4} {-1, 0, 4 }
{-1, 0, 0} {-1, 0, 0} | {-1, 0, 0} {-1, 0, 0 }
|
save 2 to list->save_index | insert save_index to {0, 9, 0}
& save 3 to list->save_index
-----
[ 3 ] INSERT AFTER X-ELEMENT
-----
insertion is performed by changing the indices of the element, after which the insertion occurs and following the inserting elements of the indices
Insert (1, &list, 7)
--> -->
{ 0, 0, 0} { 0, 0, 0} { 0, 0, 0}
{ 0, 9, 2} { 0, 9, 4} < { 0, 9, 4}
{ 1, 9, 3} > { 4, 9, 3} { 4, 9, 3}
{ 2, 9, 0} { 2, 9, 0} { 2, 9, 0}
{-1, 0, 0} <free {-1, 0, 0} > { 1, 7, 2}
... - we should change capacity
we change indices 1-st and 2nd element
(before & after inserted element elements)
to pointers to free element