Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Lisp
Перезагрузить страницу Доступ к регистрам управления cостояния
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
4x10 4x10 вне форума
Member
 
Сообщений: 23
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 07.05.2007
По умолчанию Доступ к регистрам управления cостояния - 10.05.2007, 18:29

Проверить, входит ли заданный элемент в упорядоченное бинарное дерево.
Бинарное дерево представляется так:
вершина 1, правый потомок 3, левый потомок 2, потомки вершины 2 - 4 левый и 5 правый, и потмок вершины 3 - 6.
Ответить с цитированием
  (#2 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 522
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 10.05.2007, 20:07

Paul Graham ANSI Common Lisp p.74
http://lib.store.yahoo.net/lib/paulgraham/acl2.lisp

Код:
(defstruct (node (:print-function
                  (lambda (n s d)
                    (format s "#<~A>" (node-elt n)))))
  elt (l nil) (r nil))

(defun bst-insert (obj bst <)
  (if (null bst)
      (make-node :elt obj)
      (let ((elt (node-elt bst)))
        (if (eql obj elt)
            bst
            (if (funcall < obj elt)
                (make-node
                 :elt elt
                 :l   (bst-insert obj (node-l bst) <)
                 :r   (node-r bst))
                (make-node
                 :elt elt
                 :r   (bst-insert obj (node-r bst) <)
                 :l   (node-l bst)))))))

(defun bst-find (obj bst <)
  (if (null bst)
      nil
      (let ((elt (node-elt bst)))
        (if (eql obj elt)
            bst
            (if (funcall < obj elt)
                (bst-find obj (node-l bst) <)
                (bst-find obj (node-r bst) <))))))
(setf nums nil)
NIL

(dolist (x '(1 3 2 4 6 5))
(setf nums (bst-insert x nums #'<)))
NIL

(bst-find 4 nums #'<)
#<4>
Ответить с цитированием
  (#3 (permalink)) Старый
4x10 4x10 вне форума
Member
 
Сообщений: 23
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 07.05.2007
По умолчанию 10.05.2007, 20:38

Цитата:
Paul Graham ANSI Common Lisp p.74
http://lib.store.yahoo.net/lib/paulgraham/acl2.lisp

Код:
(defstruct (node (:print-function
                  (lambda (n s d)
                    (format s "#<~A>" (node-elt n)))))
  elt (l nil) (r nil))

(defun bst-insert (obj bst <)
  (if (null bst)
      (make-node :elt obj)
      (let ((elt (node-elt bst)))
        (if (eql obj elt)
            bst
            (if (funcall < obj elt)
                (make-node
                 :elt elt
                 :l   (bst-insert obj (node-l bst) <)
                 :r   (node-r bst))
                (make-node
                 :elt elt
                 :r   (bst-insert obj (node-r bst) <)
                 :l   (node-l bst)))))))

(defun bst-find (obj bst <)
  (if (null bst)
      nil
      (let ((elt (node-elt bst)))
        (if (eql obj elt)
            bst
            (if (funcall < obj elt)
                (bst-find obj (node-l bst) <)
                (bst-find obj (node-r bst) <))))))
(setf nums nil)
NIL

(dolist (x '(1 3 2 4 6 5))
(setf nums (bst-insert x nums #'<)))
NIL

(bst-find 4 nums #'<)
#<4>


Дерево задано списком (1(2(4 5)3(6)))
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
панель управления Наденька Любые вопросы от новичков 0 02.01.2012 15:00
Средство управления anton682 Драйвера 3 22.12.2009 11:59
Прямые команды регистрам LPT в XP aleksi4 Железо. Написание драйверов 5 26.10.2008 17:34
панель управления qu1et Софт и программы 9 28.09.2008 12:27
Нужна программа управления. sven Форум программистов 2 22.07.2008 19:10
Доступ к регистрам управления/cостояния MaMaV Железо. Написание драйверов 1 04.10.2006 14:57
Доступ к элементам управления в CDialog pEtr0 Visual C++ 1 12.04.2006 21:38
Элемент управления гиперссылка c++ WinAPI 4 22.12.2005 19:58
Потеря доступа к регистрам на плате PCI после ее запуска baical Железо. Написание драйверов 1 27.11.2005 16:32
Создание элементов управления kas WinAPI 7 19.06.2004 11:20
Доступ к элементам управления в ATL Dialog was_mas_immaman Visual C++ 9 28.12.2003 14:06



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов