Есть в немерле аналог list двухнаправленный c match конца и начало элементов
Re: Двунаправленные списки и добавление в конец
От:
Аноним
Дата:
29.02.12 12:09
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Есть в немерле аналог list двухнаправленный c match конца и начало элементов
нечто похожее на списки Рефала
Re[2]: Двунаправленные списки и добавление в конец
От:
Аноним
Дата:
29.02.12 15:05
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Аноним, Вы писали:
А>>Есть в немерле аналог list двухнаправленный c match конца и начало элементов
А>нечто похожее на списки Рефала
Здравствуйте, Аноним, Вы писали:
А>a+b(а и b — списки в Nemerle) имеет линейную сложность, райт?
public Append[T] (x : list [T], y : list [T]) : list [T]
{
NList.RevAppend (NList.Rev (x), y)
}
public RevAppend[T] (x : list [T], y : list [T]) : list [T] {
match (x) {
| h :: t => RevAppend(t, h :: y)
| [] => y
}
}
Сложность вроде линейная, но не шибко эффективно получается.
Re[4]: Двунаправленные списки и добавление в конец
От:
Аноним
Дата:
29.02.12 15:53
Оценка:
Z>Сложность вроде линейная, но не шибко эффективно получается.
Я к тому — плохо, что линейная. Однонаправленные списки можно и нужно конкатенировать за константное вермя.
Re[5]: Двунаправленные списки и добавление в конец
Здравствуйте, <Аноним>, Вы писали:
А>Я к тому — плохо, что линейная. Однонаправленные списки можно и нужно конкатенировать за константное вермя.
Как? Учти что списки не изменяемые.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[6]: Двунаправленные списки и добавление в конец
От:
Аноним
Дата:
29.02.12 17:29
Оценка:
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, <Аноним>, Вы писали:
А>>Я к тому — плохо, что линейная. Однонаправленные списки можно и нужно конкатенировать за константное вермя. WH>Как? Учти что списки не изменяемые.
Ну да, забыл — там же копирование.
Re[3]: Двунаправленные списки и добавление в конец