Skip to content

Items are not always added to a SkipList #137

Open
@Hoodedgull

Description

@Hoodedgull

Describe the bug
When attempting to add an item to the SkipList, it is not always added. This seems to be caused by the fact that the _getNextLevel() method may return 0, in which case the for loop on line 138 that adds elements to the SkipList is not entered because lvl is 0.

To Reproduce
It is a bit difficult to reproduce, since a SkipList is a probabilistic data structure, so the behaviour will not be the same every time it is used. However, the following should work:

  1. Create a unit test
  2. Create a SkipList in that test
  3. Add a random number to the list and call list.Contains(number)
  4. Assert that this is true because you just added the number
  5. Run that test 1000 times

Expected behavior
I expect that after adding a number to a list of integers, the list will contain that number

Environmnet:

  • OS: Windows 10
  • .NET Version: .NET Core v3.1.101
  • IDE: Visual Studio Enterprise 2019

Additional context
If the Random object in the SkipList is initialized with seed 123, the first call to Add will not insert the element

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions