Я попробовал лучшее внедрение списка Skip в C ++, в котором у меня была особая идея, которую я хотел попробовать. Вместо этого наличие каждого элемента на базовом уровне является вектором столбцов, у меня есть только одному на основе списка на базовом уровне, и я храню простые целые числа относительно того, в каком уровне они находятся.while(coinFilp() == heads) {
node.level++
}
< /code>
, а затем я использовал node.level в качестве индикатора высоты. < /p>
Ниже приведено, как я реализовал список пропуска: < /p>
Iterator after(int level, Iterator it)
{
Node *cNode = it.currentNode;
Node *nextNode = cNode->next;
while (nextNode->level < level && nextNode != ll.getTrailer())
{
nextNode = nextNode->next;
}
return Iterator(nextNode);
}
Iterator skipSearch(T v)
{
Iterator n = Iterator(s);
int currentLevel = s->level;
while (currentLevel > -1)
{
n = Iterator(s);
// make sure one is not null
while (after(currentLevel, n).currentNode != ll.getTrailer() && after(currentLevel, n).getValue() < v)
{
n = after(currentLevel, n);
}
currentLevel--;
}
return n;
}
Iterator skipInsert(T v)
{
Iterator it = skipSearch(v);
Iterator newElement = insertAfterSkip(v, it);
Node *n = newElement.currentNode;
while (n->level >= currentLevel)
{
incrementLevel();
}
return newElement;
}
void incrementLevel()
{
s->level++;
ll.getTrailer()->level++;
currentLevel++;
}
private:
Iterator insertAfterSkip(T val, Iterator p)
{
Iterator it = after(0, p);
Node *no = ll.insert(val, *(it.currentNode));
n++;
return Iterator(*no);
}
< /code>
Это всего лишь несколько методов в моей реализации списка Skip. Я имею в виду, что я чувствую, что вместо копирования объекта определенное количество раз, мы можем просто дать ему случайное число, и это будет его уровень. Во -первых, правильная ли эта реализация списка Skip? И назначает ли число вместо копирования объектов лучшим способом приблизиться к нему?
спасибо
Подробнее здесь: https://stackoverflow.com/questions/796 ... ng-objects
Список пропуска с каждым столбцом, имеющим целое число, вместо копирования объектов ⇐ C++
Программы на C++. Форум разработчиков
1748810759
Anonymous
Я попробовал лучшее внедрение списка Skip в C ++, в котором у меня была особая идея, которую я хотел попробовать. Вместо этого наличие каждого элемента на базовом уровне является вектором столбцов, у меня есть только одному на основе списка на базовом уровне, и я храню простые целые числа относительно того, в каком уровне они находятся.while(coinFilp() == heads) {
node.level++
}
< /code>
, а затем я использовал node.level в качестве индикатора высоты. < /p>
Ниже приведено, как я реализовал список пропуска: < /p>
Iterator after(int level, Iterator it)
{
Node *cNode = it.currentNode;
Node *nextNode = cNode->next;
while (nextNode->level < level && nextNode != ll.getTrailer())
{
nextNode = nextNode->next;
}
return Iterator(nextNode);
}
Iterator skipSearch(T v)
{
Iterator n = Iterator(s);
int currentLevel = s->level;
while (currentLevel > -1)
{
n = Iterator(s);
// make sure one is not null
while (after(currentLevel, n).currentNode != ll.getTrailer() && after(currentLevel, n).getValue() < v)
{
n = after(currentLevel, n);
}
currentLevel--;
}
return n;
}
Iterator skipInsert(T v)
{
Iterator it = skipSearch(v);
Iterator newElement = insertAfterSkip(v, it);
Node *n = newElement.currentNode;
while (n->level >= currentLevel)
{
incrementLevel();
}
return newElement;
}
void incrementLevel()
{
s->level++;
ll.getTrailer()->level++;
currentLevel++;
}
private:
Iterator insertAfterSkip(T val, Iterator p)
{
Iterator it = after(0, p);
Node *no = ll.insert(val, *(it.currentNode));
n++;
return Iterator(*no);
}
< /code>
Это всего лишь несколько методов в моей реализации списка Skip. Я имею в виду, что я чувствую, что вместо копирования объекта определенное количество раз, мы можем просто дать ему случайное число, и это будет его уровень. Во -первых, правильная ли эта реализация списка Skip? И назначает ли число вместо копирования объектов лучшим способом приблизиться к нему?
спасибо
Подробнее здесь: [url]https://stackoverflow.com/questions/79647921/skip-list-with-each-column-having-an-integer-instead-of-copying-objects[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия