Skip to content

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

Mchl-krpch/List

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

-----------------------------------------------
 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

About

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

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published