Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Чтение дерева из строки (Си)...

11K
05 ноября 2006 года
ArtemESC
14 / / 19.02.2006
Дерево (листья - строки) записано в строке в следующем виде, скажем строка "a>sdf<>pp" преобразуется в дерево вида
a
/ \
sdf pp
(То есть ">" означает переход к "потомку", а "<" к "родителю" )...
Написал следующий код, но возникает проблема, при возврате из рекурсии не сохраняеться значение строки:
Код:
struct sTreeNode {
   char *data;
   struct sTreeNode *left;
   struct sTreeNode *right;
};
 
TreeNode readtree(char **p)
{
   if ((p == NULL) || (*p == NULL) || (strlen(*p) == 0))
      return NULL;
   char *s = *p;
   char *temp = s, ch;
   TreeNode tree = newtree();
   while (ch = *(s++))
   {
      switch (ch)
      {
         case '>':
            *(s - 1) = '\0';
            tree->data = temp;
            if (tree->left == NULL)
               tree->left = readtree(&s);
            else
               tree->right = readtree(&s);
            temp = s;
            break;
         case '<':
            *(s - 1) = '\0';
            tree->data = temp;
            return tree;
         default:
            break;
      }
   }
   tree->data = temp;
   return tree;
}

Заранее спасибо за помощь...
2
06 ноября 2006 года
squirL
5.6K / / 13.08.2003
тэгами сами.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог