The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Глубокая рекурсия в 2х ОС"
Отправлено DeadMustdie, 22-Сен-05 20:46 
Нечто вроде:

struct MyStackItem {
  MyStateData data;
  MyStackItem* next;
};

MyStackItem* stackPush(MyStackItem** root)
{
  struct MyStackItem* tmp = (struct MyStackItem*)malloc(sizeof(struct MyStackItem));
  tmp->next = *root;
  *root = tmp;
  return tmp;
}

MyStackItem* stackPop(MyStackItem** root)
{
  struct MyStackItem* tmp = *root;
  if ( *root )
    *root = (*root)->next;
  return tmp;
}

...

struct MyStackItem* stackRoot = NULL;
struct MyStackItem* currStack = stackPush(&stackRoot);
...
while ((currStack = stackPop(&stackRoot))!=NULL) {
  /* заталкиваем в стек новые "задания" */
  /* обрабатываем текущее "задание" в *currStack */
}

Вот Вам и рекурсия без использования основного стека.
На C++ всё получится существенно короче и работать скорее
всего будет чуток побыстрее (при сравнимых затратах труда).

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру