Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/29: Рейтинг темы: голосов - 29, средняя оценка - 4.83
1 / 1 / 1
Регистрация: 02.01.2013
Сообщений: 123

фиктивный узел

07.02.2013, 01:53. Показов 5705. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем ! вот сижу и разбираюсь со связным списоком, и все никак не понимаю что такое фиктивный узел ... объясните пожалуйста что за фиктивный узел такой ? и пришлите простенький код с фиктивным узлом для больше понимания (желательно односвязной список)...
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.02.2013, 01:53
Ответы с готовыми решениями:

Двоичное дерево: как, зная данный узел дерева, изменить его родительский узел?
как зная данный узел дерева измениь его родтельский узел? спасибо.

Железнодорожный сортировочный узел C++
Железнодорожный сортировочный узел устроен так, как показано на ри-сунке. На правой стороне собрано в произвольном порядке несколько...

Удалить узел в бинарном дереве
Добрый вечер. В задании нужно найти узел дерева с наибольшим показателем счетчика, после чего удалить найденный узел из дерева. В структуре...

1
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
07.02.2013, 13:06
Лучший ответ Сообщение было отмечено septe-mber как решение

Решение

Организация списка с фиктивным узлом примечательна тем, что список начинается с узла, который не хранит значение. В основном в таких реализациях используют циклический список и двойное связывание, т.е. фиктивный узел является началом и концом двусвязного списка. В таком случае реализация получается довольно лаконичная.

C++
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <ctime>
#include <cstdlib>
#include <iostream>
#include <stdexcept>
 
// êëàññ ôèêòèâíîãî óçëà
// íå ñîäåðæèò äàííûå, óìååò ñàìîâñòàâëÿòüñÿ è ñàìîóäàëÿòüñÿ äëÿ ïîòîìêîâ
struct NodeBase {
  NodeBase *next, *prev;
  NodeBase(NodeBase *next, NodeBase *prev) : next(next), prev(prev) {
    next->prev = prev->next = this;
  }
  NodeBase() : next(this), prev(this) {}
  virtual ~NodeBase() {
    next->prev = prev;
    prev->next = next;
  }
};
 
// ðåàëüíûé óçåë ñïèñêà
// ñîäåðæèò äàííûå, èñïîëüçóåò êîíñòðóêòîð è äåñòðóêòîð êëàññà
// ôèêòèâíîãî óçëà äëÿ ñàìîâñòàâêè è ñàìîóäàëåíèÿ
template <class T>
struct Node : public NodeBase {
  T value;
  Node(NodeBase *next, NodeBase *prev, const T &value) : NodeBase(next, prev),
    value(value) {}
};
 
// äëÿ ïðèìåðà, äâóñâÿçíûé ñïèñîê ñ îãðàíè÷åííûì ôóíêöèîíàëîì
template <class T>
class LinkedList {
 public:
  LinkedList() : base() {}
  virtual ~LinkedList() {
    clear();
  }
  void pushBack(const T &value) {
    // âñòàâêà â êîíåö ñïèñêà
    new Node<T>(&base, base.prev, value);
    ++size;
  }
  void pushFront(const T &value) {
    // âñòàâêà â начало ñïèñêà
    new Node<T>(base.next, &base, value);
    ++size;
  }
  size_t getSize() {
    return size;
  }
  T popBack() {
    if (!isEmpty()) {
      // получение значения последнего элемента
      T value = ((Node<T>*)base.prev)->value;
      // удаление последнего элемента
      delete base.prev;
      --size;
      return value;
    } else {
      throw std::overflow_error("stack is empty");
    }
  }
  T popFront() {
    if (!isEmpty()) {
      T value = ((Node<T>*)base.next)->value;
      delete base.next;
      --size;
      return value;
    } else {
      throw std::overflow_error("stack is empty");
    }
  }
  // список пуст, если фиктивный элемент указывает сам на себя
  bool isEmpty() const { return base.next == &base; }
  void clear() {
    while (!isEmpty()) {
      delete base.next;
    }
    size = 0;
  }
 private:
  size_t size;
  // ôèêòèâíûé óçåë
  NodeBase base;
};
 
int main(int argc, char **argv) {
  srand(time(0));
 
  LinkedList<int> a;
  for (int i = 0; i < 100; ++i) {
    a.pushBack(i);
  }
  
  while (!a.isEmpty()) {
    std::cout << a.popBack() << std::endl;
  }
 
  std::cin.get();
  return 0;
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.02.2013, 13:06
Помогаю со студенческими работами здесь

Добавить узел в бинарное дерево
Мне нужно добавить узел в бинарное дерево, чтобы вышло так: &quot;Binary Tree is a kind of orderly table&quot;. Условие задачи: Вот мой код: ...

Узел как value type, а не указатель
Здравствуйте С++ не очень хорошо знаю, немного учил javascript и java , надеюсь смогу сформулировать вопрос Есть узел с...

Удалить узел бинарного дерева
необходимо удалить узел, у которого нет потомков нужно обнулить ссылку предка и освободить память, но не совсем понимаю, как это сделать....

Неправильно удаляет узел из бинарного дерева
Помогите подправить фунцию SearchDelete...Почему-то не работет. //13. Побудувати довільне бінарне дерево, зчитавши числові значення...

Как удалить узел в связном списке?
привет всем! подскажите пожалуйста в подробностях как происходит удаление узла в алгоритме связного списка ?? #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru