diff options
| author | Thien-Thi Nguyen | 2007-08-27 02:31:23 +0000 |
|---|---|---|
| committer | Thien-Thi Nguyen | 2007-08-27 02:31:23 +0000 |
| commit | bdf0a828423d27d8a0ea956da4eda1754631dc3b (patch) | |
| tree | 3f55cd01ec86447c8f2a2757bad2c939e17c1937 | |
| parent | 5afb301bee960583ddd66044367ac08155ff9be8 (diff) | |
| download | emacs-bdf0a828423d27d8a0ea956da4eda1754631dc3b.tar.gz emacs-bdf0a828423d27d8a0ea956da4eda1754631dc3b.zip | |
Do s/elib-node-/avl-tree-node-/g. Resulting changed macro names:
avl-tree-node-left, avl-tree-node-right, avl-tree-node-data,
avl-tree-node-set-left, avl-tree-node-set-right, avl-tree-node-set-data,
avl-tree-node-branch, avl-tree-node-set-branch.
| -rw-r--r-- | lisp/emacs-lisp/avl-tree.el | 190 |
1 files changed, 95 insertions, 95 deletions
diff --git a/lisp/emacs-lisp/avl-tree.el b/lisp/emacs-lisp/avl-tree.el index 63e88ac21f9..0e37e718250 100644 --- a/lisp/emacs-lisp/avl-tree.el +++ b/lisp/emacs-lisp/avl-tree.el | |||
| @@ -54,38 +54,38 @@ | |||
| 54 | 54 | ||
| 55 | ;;; Code: | 55 | ;;; Code: |
| 56 | 56 | ||
| 57 | (defmacro elib-node-left (node) | 57 | (defmacro avl-tree-node-left (node) |
| 58 | ;; Return the left pointer of NODE. | 58 | ;; Return the left pointer of NODE. |
| 59 | `(aref ,node 0)) | 59 | `(aref ,node 0)) |
| 60 | 60 | ||
| 61 | (defmacro elib-node-right (node) | 61 | (defmacro avl-tree-node-right (node) |
| 62 | ;; Return the right pointer of NODE. | 62 | ;; Return the right pointer of NODE. |
| 63 | `(aref ,node 1)) | 63 | `(aref ,node 1)) |
| 64 | 64 | ||
| 65 | (defmacro elib-node-data (node) | 65 | (defmacro avl-tree-node-data (node) |
| 66 | ;; Return the data of NODE. | 66 | ;; Return the data of NODE. |
| 67 | `(aref ,node 2)) | 67 | `(aref ,node 2)) |
| 68 | 68 | ||
| 69 | (defmacro elib-node-set-left (node newleft) | 69 | (defmacro avl-tree-node-set-left (node newleft) |
| 70 | ;; Set the left pointer of NODE to NEWLEFT. | 70 | ;; Set the left pointer of NODE to NEWLEFT. |
| 71 | `(aset ,node 0 ,newleft)) | 71 | `(aset ,node 0 ,newleft)) |
| 72 | 72 | ||
| 73 | (defmacro elib-node-set-right (node newright) | 73 | (defmacro avl-tree-node-set-right (node newright) |
| 74 | ;; Set the right pointer of NODE to NEWRIGHT. | 74 | ;; Set the right pointer of NODE to NEWRIGHT. |
| 75 | `(aset ,node 1 ,newright)) | 75 | `(aset ,node 1 ,newright)) |
| 76 | 76 | ||
| 77 | (defmacro elib-node-set-data (node newdata) | 77 | (defmacro avl-tree-node-set-data (node newdata) |
| 78 | ;; Set the data of NODE to NEWDATA. | 78 | ;; Set the data of NODE to NEWDATA. |
| 79 | `(aset ,node 2 ,newdata)) | 79 | `(aset ,node 2 ,newdata)) |
| 80 | 80 | ||
| 81 | (defmacro elib-node-branch (node branch) | 81 | (defmacro avl-tree-node-branch (node branch) |
| 82 | ;; Get value of a branch of a node. | 82 | ;; Get value of a branch of a node. |
| 83 | ;; | 83 | ;; |
| 84 | ;; NODE is the node, and BRANCH is the branch. | 84 | ;; NODE is the node, and BRANCH is the branch. |
| 85 | ;; 0 for left pointer, 1 for right pointer and 2 for the data." | 85 | ;; 0 for left pointer, 1 for right pointer and 2 for the data." |
| 86 | `(aref ,node ,branch)) | 86 | `(aref ,node ,branch)) |
| 87 | 87 | ||
| 88 | (defmacro elib-node-set-branch (node branch newval) | 88 | (defmacro avl-tree-node-set-branch (node branch newval) |
| 89 | ;; Set value of a branch of a node. | 89 | ;; Set value of a branch of a node. |
| 90 | ;; | 90 | ;; |
| 91 | ;; NODE is the node, and BRANCH is the branch. | 91 | ;; NODE is the node, and BRANCH is the branch. |
| @@ -114,7 +114,7 @@ | |||
| 114 | 114 | ||
| 115 | (defmacro avl-tree-root (tree) | 115 | (defmacro avl-tree-root (tree) |
| 116 | ;; Return the root node for an avl-tree. INTERNAL USE ONLY. | 116 | ;; Return the root node for an avl-tree. INTERNAL USE ONLY. |
| 117 | `(elib-node-left (car (cdr ,tree)))) | 117 | `(avl-tree-node-left (car (cdr ,tree)))) |
| 118 | 118 | ||
| 119 | (defmacro avl-tree-dummyroot (tree) | 119 | (defmacro avl-tree-dummyroot (tree) |
| 120 | ;; Return the dummy node of an avl-tree. INTERNAL USE ONLY. | 120 | ;; Return the dummy node of an avl-tree. INTERNAL USE ONLY. |
| @@ -129,7 +129,7 @@ | |||
| 129 | 129 | ||
| 130 | (defun avl-tree-del-balance1 (node branch) | 130 | (defun avl-tree-del-balance1 (node branch) |
| 131 | ;; Rebalance a tree and return t if the height of the tree has shrunk. | 131 | ;; Rebalance a tree and return t if the height of the tree has shrunk. |
| 132 | (let* ((br (elib-node-branch node branch)) | 132 | (let* ((br (avl-tree-node-branch node branch)) |
| 133 | p1 | 133 | p1 |
| 134 | b1 | 134 | b1 |
| 135 | p2 | 135 | p2 |
| @@ -146,13 +146,13 @@ | |||
| 146 | 146 | ||
| 147 | (t | 147 | (t |
| 148 | ;; Rebalance. | 148 | ;; Rebalance. |
| 149 | (setq p1 (elib-node-right br) | 149 | (setq p1 (avl-tree-node-right br) |
| 150 | b1 (avl-tree-node-balance p1)) | 150 | b1 (avl-tree-node-balance p1)) |
| 151 | (if (>= b1 0) | 151 | (if (>= b1 0) |
| 152 | ;; Single RR rotation. | 152 | ;; Single RR rotation. |
| 153 | (progn | 153 | (progn |
| 154 | (elib-node-set-right br (elib-node-left p1)) | 154 | (avl-tree-node-set-right br (avl-tree-node-left p1)) |
| 155 | (elib-node-set-left p1 br) | 155 | (avl-tree-node-set-left p1 br) |
| 156 | (if (= 0 b1) | 156 | (if (= 0 b1) |
| 157 | (progn | 157 | (progn |
| 158 | (avl-tree-node-set-balance br +1) | 158 | (avl-tree-node-set-balance br +1) |
| @@ -161,28 +161,28 @@ | |||
| 161 | (avl-tree-node-set-balance br 0) | 161 | (avl-tree-node-set-balance br 0) |
| 162 | (avl-tree-node-set-balance p1 0) | 162 | (avl-tree-node-set-balance p1 0) |
| 163 | (setq result t)) | 163 | (setq result t)) |
| 164 | (elib-node-set-branch node branch p1) | 164 | (avl-tree-node-set-branch node branch p1) |
| 165 | result) | 165 | result) |
| 166 | 166 | ||
| 167 | ;; Double RL rotation. | 167 | ;; Double RL rotation. |
| 168 | (setq p2 (elib-node-left p1) | 168 | (setq p2 (avl-tree-node-left p1) |
| 169 | b2 (avl-tree-node-balance p2)) | 169 | b2 (avl-tree-node-balance p2)) |
| 170 | (elib-node-set-left p1 (elib-node-right p2)) | 170 | (avl-tree-node-set-left p1 (avl-tree-node-right p2)) |
| 171 | (elib-node-set-right p2 p1) | 171 | (avl-tree-node-set-right p2 p1) |
| 172 | (elib-node-set-right br (elib-node-left p2)) | 172 | (avl-tree-node-set-right br (avl-tree-node-left p2)) |
| 173 | (elib-node-set-left p2 br) | 173 | (avl-tree-node-set-left p2 br) |
| 174 | (if (> b2 0) | 174 | (if (> b2 0) |
| 175 | (avl-tree-node-set-balance br -1) | 175 | (avl-tree-node-set-balance br -1) |
| 176 | (avl-tree-node-set-balance br 0)) | 176 | (avl-tree-node-set-balance br 0)) |
| 177 | (if (< b2 0) | 177 | (if (< b2 0) |
| 178 | (avl-tree-node-set-balance p1 +1) | 178 | (avl-tree-node-set-balance p1 +1) |
| 179 | (avl-tree-node-set-balance p1 0)) | 179 | (avl-tree-node-set-balance p1 0)) |
| 180 | (elib-node-set-branch node branch p2) | 180 | (avl-tree-node-set-branch node branch p2) |
| 181 | (avl-tree-node-set-balance p2 0) | 181 | (avl-tree-node-set-balance p2 0) |
| 182 | t))))) | 182 | t))))) |
| 183 | 183 | ||
| 184 | (defun avl-tree-del-balance2 (node branch) | 184 | (defun avl-tree-del-balance2 (node branch) |
| 185 | (let* ((br (elib-node-branch node branch)) | 185 | (let* ((br (avl-tree-node-branch node branch)) |
| 186 | p1 | 186 | p1 |
| 187 | b1 | 187 | b1 |
| 188 | p2 | 188 | p2 |
| @@ -199,13 +199,13 @@ | |||
| 199 | 199 | ||
| 200 | (t | 200 | (t |
| 201 | ;; Rebalance. | 201 | ;; Rebalance. |
| 202 | (setq p1 (elib-node-left br) | 202 | (setq p1 (avl-tree-node-left br) |
| 203 | b1 (avl-tree-node-balance p1)) | 203 | b1 (avl-tree-node-balance p1)) |
| 204 | (if (<= b1 0) | 204 | (if (<= b1 0) |
| 205 | ;; Single LL rotation. | 205 | ;; Single LL rotation. |
| 206 | (progn | 206 | (progn |
| 207 | (elib-node-set-left br (elib-node-right p1)) | 207 | (avl-tree-node-set-left br (avl-tree-node-right p1)) |
| 208 | (elib-node-set-right p1 br) | 208 | (avl-tree-node-set-right p1 br) |
| 209 | (if (= 0 b1) | 209 | (if (= 0 b1) |
| 210 | (progn | 210 | (progn |
| 211 | (avl-tree-node-set-balance br -1) | 211 | (avl-tree-node-set-balance br -1) |
| @@ -214,61 +214,61 @@ | |||
| 214 | (avl-tree-node-set-balance br 0) | 214 | (avl-tree-node-set-balance br 0) |
| 215 | (avl-tree-node-set-balance p1 0) | 215 | (avl-tree-node-set-balance p1 0) |
| 216 | (setq result t)) | 216 | (setq result t)) |
| 217 | (elib-node-set-branch node branch p1) | 217 | (avl-tree-node-set-branch node branch p1) |
| 218 | result) | 218 | result) |
| 219 | 219 | ||
| 220 | ;; Double LR rotation. | 220 | ;; Double LR rotation. |
| 221 | (setq p2 (elib-node-right p1) | 221 | (setq p2 (avl-tree-node-right p1) |
| 222 | b2 (avl-tree-node-balance p2)) | 222 | b2 (avl-tree-node-balance p2)) |
| 223 | (elib-node-set-right p1 (elib-node-left p2)) | 223 | (avl-tree-node-set-right p1 (avl-tree-node-left p2)) |
| 224 | (elib-node-set-left p2 p1) | 224 | (avl-tree-node-set-left p2 p1) |
| 225 | (elib-node-set-left br (elib-node-right p2)) | 225 | (avl-tree-node-set-left br (avl-tree-node-right p2)) |
| 226 | (elib-node-set-right p2 br) | 226 | (avl-tree-node-set-right p2 br) |
| 227 | (if (< b2 0) | 227 | (if (< b2 0) |
| 228 | (avl-tree-node-set-balance br +1) | 228 | (avl-tree-node-set-balance br +1) |
| 229 | (avl-tree-node-set-balance br 0)) | 229 | (avl-tree-node-set-balance br 0)) |
| 230 | (if (> b2 0) | 230 | (if (> b2 0) |
| 231 | (avl-tree-node-set-balance p1 -1) | 231 | (avl-tree-node-set-balance p1 -1) |
| 232 | (avl-tree-node-set-balance p1 0)) | 232 | (avl-tree-node-set-balance p1 0)) |
| 233 | (elib-node-set-branch node branch p2) | 233 | (avl-tree-node-set-branch node branch p2) |
| 234 | (avl-tree-node-set-balance p2 0) | 234 | (avl-tree-node-set-balance p2 0) |
| 235 | t))))) | 235 | t))))) |
| 236 | 236 | ||
| 237 | (defun avl-tree-do-del-internal (node branch q) | 237 | (defun avl-tree-do-del-internal (node branch q) |
| 238 | 238 | ||
| 239 | (let* ((br (elib-node-branch node branch))) | 239 | (let* ((br (avl-tree-node-branch node branch))) |
| 240 | (if (elib-node-right br) | 240 | (if (avl-tree-node-right br) |
| 241 | (if (avl-tree-do-del-internal br +1 q) | 241 | (if (avl-tree-do-del-internal br +1 q) |
| 242 | (avl-tree-del-balance2 node branch)) | 242 | (avl-tree-del-balance2 node branch)) |
| 243 | (elib-node-set-data q (elib-node-data br)) | 243 | (avl-tree-node-set-data q (avl-tree-node-data br)) |
| 244 | (elib-node-set-branch node branch | 244 | (avl-tree-node-set-branch node branch |
| 245 | (elib-node-left br)) | 245 | (avl-tree-node-left br)) |
| 246 | t))) | 246 | t))) |
| 247 | 247 | ||
| 248 | (defun avl-tree-do-delete (cmpfun root branch data) | 248 | (defun avl-tree-do-delete (cmpfun root branch data) |
| 249 | ;; Return t if the height of the tree has shrunk. | 249 | ;; Return t if the height of the tree has shrunk. |
| 250 | (let* ((br (elib-node-branch root branch))) | 250 | (let* ((br (avl-tree-node-branch root branch))) |
| 251 | (cond | 251 | (cond |
| 252 | ((null br) | 252 | ((null br) |
| 253 | nil) | 253 | nil) |
| 254 | 254 | ||
| 255 | ((funcall cmpfun data (elib-node-data br)) | 255 | ((funcall cmpfun data (avl-tree-node-data br)) |
| 256 | (if (avl-tree-do-delete cmpfun br 0 data) | 256 | (if (avl-tree-do-delete cmpfun br 0 data) |
| 257 | (avl-tree-del-balance1 root branch))) | 257 | (avl-tree-del-balance1 root branch))) |
| 258 | 258 | ||
| 259 | ((funcall cmpfun (elib-node-data br) data) | 259 | ((funcall cmpfun (avl-tree-node-data br) data) |
| 260 | (if (avl-tree-do-delete cmpfun br 1 data) | 260 | (if (avl-tree-do-delete cmpfun br 1 data) |
| 261 | (avl-tree-del-balance2 root branch))) | 261 | (avl-tree-del-balance2 root branch))) |
| 262 | 262 | ||
| 263 | (t | 263 | (t |
| 264 | ;; Found it. Let's delete it. | 264 | ;; Found it. Let's delete it. |
| 265 | (cond | 265 | (cond |
| 266 | ((null (elib-node-right br)) | 266 | ((null (avl-tree-node-right br)) |
| 267 | (elib-node-set-branch root branch (elib-node-left br)) | 267 | (avl-tree-node-set-branch root branch (avl-tree-node-left br)) |
| 268 | t) | 268 | t) |
| 269 | 269 | ||
| 270 | ((null (elib-node-left br)) | 270 | ((null (avl-tree-node-left br)) |
| 271 | (elib-node-set-branch root branch (elib-node-right br)) | 271 | (avl-tree-node-set-branch root branch (avl-tree-node-right br)) |
| 272 | t) | 272 | t) |
| 273 | 273 | ||
| 274 | (t | 274 | (t |
| @@ -280,7 +280,7 @@ | |||
| 280 | 280 | ||
| 281 | (defun avl-tree-enter-balance1 (node branch) | 281 | (defun avl-tree-enter-balance1 (node branch) |
| 282 | ;; Rebalance a tree and return t if the height of the tree has grown. | 282 | ;; Rebalance a tree and return t if the height of the tree has grown. |
| 283 | (let* ((br (elib-node-branch node branch)) | 283 | (let* ((br (avl-tree-node-branch node branch)) |
| 284 | p1 | 284 | p1 |
| 285 | p2 | 285 | p2 |
| 286 | b2 | 286 | b2 |
| @@ -296,35 +296,35 @@ | |||
| 296 | 296 | ||
| 297 | (t | 297 | (t |
| 298 | ;; Tree has grown => Rebalance. | 298 | ;; Tree has grown => Rebalance. |
| 299 | (setq p1 (elib-node-right br)) | 299 | (setq p1 (avl-tree-node-right br)) |
| 300 | (if (> (avl-tree-node-balance p1) 0) | 300 | (if (> (avl-tree-node-balance p1) 0) |
| 301 | ;; Single RR rotation. | 301 | ;; Single RR rotation. |
| 302 | (progn | 302 | (progn |
| 303 | (elib-node-set-right br (elib-node-left p1)) | 303 | (avl-tree-node-set-right br (avl-tree-node-left p1)) |
| 304 | (elib-node-set-left p1 br) | 304 | (avl-tree-node-set-left p1 br) |
| 305 | (avl-tree-node-set-balance br 0) | 305 | (avl-tree-node-set-balance br 0) |
| 306 | (elib-node-set-branch node branch p1)) | 306 | (avl-tree-node-set-branch node branch p1)) |
| 307 | 307 | ||
| 308 | ;; Double RL rotation. | 308 | ;; Double RL rotation. |
| 309 | (setq p2 (elib-node-left p1) | 309 | (setq p2 (avl-tree-node-left p1) |
| 310 | b2 (avl-tree-node-balance p2)) | 310 | b2 (avl-tree-node-balance p2)) |
| 311 | (elib-node-set-left p1 (elib-node-right p2)) | 311 | (avl-tree-node-set-left p1 (avl-tree-node-right p2)) |
| 312 | (elib-node-set-right p2 p1) | 312 | (avl-tree-node-set-right p2 p1) |
| 313 | (elib-node-set-right br (elib-node-left p2)) | 313 | (avl-tree-node-set-right br (avl-tree-node-left p2)) |
| 314 | (elib-node-set-left p2 br) | 314 | (avl-tree-node-set-left p2 br) |
| 315 | (if (> b2 0) | 315 | (if (> b2 0) |
| 316 | (avl-tree-node-set-balance br -1) | 316 | (avl-tree-node-set-balance br -1) |
| 317 | (avl-tree-node-set-balance br 0)) | 317 | (avl-tree-node-set-balance br 0)) |
| 318 | (if (< b2 0) | 318 | (if (< b2 0) |
| 319 | (avl-tree-node-set-balance p1 +1) | 319 | (avl-tree-node-set-balance p1 +1) |
| 320 | (avl-tree-node-set-balance p1 0)) | 320 | (avl-tree-node-set-balance p1 0)) |
| 321 | (elib-node-set-branch node branch p2)) | 321 | (avl-tree-node-set-branch node branch p2)) |
| 322 | (avl-tree-node-set-balance (elib-node-branch node branch) 0) | 322 | (avl-tree-node-set-balance (avl-tree-node-branch node branch) 0) |
| 323 | nil)))) | 323 | nil)))) |
| 324 | 324 | ||
| 325 | (defun avl-tree-enter-balance2 (node branch) | 325 | (defun avl-tree-enter-balance2 (node branch) |
| 326 | ;; Return t if the tree has grown. | 326 | ;; Return t if the tree has grown. |
| 327 | (let* ((br (elib-node-branch node branch)) | 327 | (let* ((br (avl-tree-node-branch node branch)) |
| 328 | p1 | 328 | p1 |
| 329 | p2 | 329 | p2 |
| 330 | b2) | 330 | b2) |
| @@ -339,56 +339,56 @@ | |||
| 339 | 339 | ||
| 340 | (t | 340 | (t |
| 341 | ;; Balance was -1 => Rebalance. | 341 | ;; Balance was -1 => Rebalance. |
| 342 | (setq p1 (elib-node-left br)) | 342 | (setq p1 (avl-tree-node-left br)) |
| 343 | (if (< (avl-tree-node-balance p1) 0) | 343 | (if (< (avl-tree-node-balance p1) 0) |
| 344 | ;; Single LL rotation. | 344 | ;; Single LL rotation. |
| 345 | (progn | 345 | (progn |
| 346 | (elib-node-set-left br (elib-node-right p1)) | 346 | (avl-tree-node-set-left br (avl-tree-node-right p1)) |
| 347 | (elib-node-set-right p1 br) | 347 | (avl-tree-node-set-right p1 br) |
| 348 | (avl-tree-node-set-balance br 0) | 348 | (avl-tree-node-set-balance br 0) |
| 349 | (elib-node-set-branch node branch p1)) | 349 | (avl-tree-node-set-branch node branch p1)) |
| 350 | 350 | ||
| 351 | ;; Double LR rotation. | 351 | ;; Double LR rotation. |
| 352 | (setq p2 (elib-node-right p1) | 352 | (setq p2 (avl-tree-node-right p1) |
| 353 | b2 (avl-tree-node-balance p2)) | 353 | b2 (avl-tree-node-balance p2)) |
| 354 | (elib-node-set-right p1 (elib-node-left p2)) | 354 | (avl-tree-node-set-right p1 (avl-tree-node-left p2)) |
| 355 | (elib-node-set-left p2 p1) | 355 | (avl-tree-node-set-left p2 p1) |
| 356 | (elib-node-set-left br (elib-node-right p2)) | 356 | (avl-tree-node-set-left br (avl-tree-node-right p2)) |
| 357 | (elib-node-set-right p2 br) | 357 | (avl-tree-node-set-right p2 br) |
| 358 | (if (< b2 0) | 358 | (if (< b2 0) |
| 359 | (avl-tree-node-set-balance br +1) | 359 | (avl-tree-node-set-balance br +1) |
| 360 | (avl-tree-node-set-balance br 0)) | 360 | (avl-tree-node-set-balance br 0)) |
| 361 | (if (> b2 0) | 361 | (if (> b2 0) |
| 362 | (avl-tree-node-set-balance p1 -1) | 362 | (avl-tree-node-set-balance p1 -1) |
| 363 | (avl-tree-node-set-balance p1 0)) | 363 | (avl-tree-node-set-balance p1 0)) |
| 364 | (elib-node-set-branch node branch p2)) | 364 | (avl-tree-node-set-branch node branch p2)) |
| 365 | (avl-tree-node-set-balance (elib-node-branch node branch) 0) | 365 | (avl-tree-node-set-balance (avl-tree-node-branch node branch) 0) |
| 366 | nil)))) | 366 | nil)))) |
| 367 | 367 | ||
| 368 | (defun avl-tree-do-enter (cmpfun root branch data) | 368 | (defun avl-tree-do-enter (cmpfun root branch data) |
| 369 | ;; Return t if height of tree ROOT has grown. INTERNAL USE ONLY. | 369 | ;; Return t if height of tree ROOT has grown. INTERNAL USE ONLY. |
| 370 | (let ((br (elib-node-branch root branch))) | 370 | (let ((br (avl-tree-node-branch root branch))) |
| 371 | (cond | 371 | (cond |
| 372 | ((null br) | 372 | ((null br) |
| 373 | ;; Data not in tree, insert it. | 373 | ;; Data not in tree, insert it. |
| 374 | (elib-node-set-branch root branch | 374 | (avl-tree-node-set-branch root branch |
| 375 | (avl-tree-node-create nil nil data 0)) | 375 | (avl-tree-node-create nil nil data 0)) |
| 376 | t) | 376 | t) |
| 377 | 377 | ||
| 378 | ((funcall cmpfun data (elib-node-data br)) | 378 | ((funcall cmpfun data (avl-tree-node-data br)) |
| 379 | (and (avl-tree-do-enter cmpfun | 379 | (and (avl-tree-do-enter cmpfun |
| 380 | br | 380 | br |
| 381 | 0 data) | 381 | 0 data) |
| 382 | (avl-tree-enter-balance2 root branch))) | 382 | (avl-tree-enter-balance2 root branch))) |
| 383 | 383 | ||
| 384 | ((funcall cmpfun (elib-node-data br) data) | 384 | ((funcall cmpfun (avl-tree-node-data br) data) |
| 385 | (and (avl-tree-do-enter cmpfun | 385 | (and (avl-tree-do-enter cmpfun |
| 386 | br | 386 | br |
| 387 | 1 data) | 387 | 1 data) |
| 388 | (avl-tree-enter-balance1 root branch))) | 388 | (avl-tree-enter-balance1 root branch))) |
| 389 | 389 | ||
| 390 | (t | 390 | (t |
| 391 | (elib-node-set-data br data) | 391 | (avl-tree-node-set-data br data) |
| 392 | nil)))) | 392 | nil)))) |
| 393 | 393 | ||
| 394 | ;; ---------------------------------------------------------------- | 394 | ;; ---------------------------------------------------------------- |
| @@ -405,16 +405,16 @@ | |||
| 405 | (push nil stack) | 405 | (push nil stack) |
| 406 | (while node | 406 | (while node |
| 407 | (if (and go-left | 407 | (if (and go-left |
| 408 | (elib-node-left node)) | 408 | (avl-tree-node-left node)) |
| 409 | ;; Do the left subtree first. | 409 | ;; Do the left subtree first. |
| 410 | (progn | 410 | (progn |
| 411 | (push node stack) | 411 | (push node stack) |
| 412 | (setq node (elib-node-left node))) | 412 | (setq node (avl-tree-node-left node))) |
| 413 | ;; Apply the function... | 413 | ;; Apply the function... |
| 414 | (funcall map-function node) | 414 | (funcall map-function node) |
| 415 | ;; and do the right subtree. | 415 | ;; and do the right subtree. |
| 416 | (if (elib-node-right node) | 416 | (if (avl-tree-node-right node) |
| 417 | (setq node (elib-node-right node) | 417 | (setq node (avl-tree-node-right node) |
| 418 | go-left t) | 418 | go-left t) |
| 419 | (setq node (pop stack) | 419 | (setq node (pop stack) |
| 420 | go-left nil)))))) | 420 | go-left nil)))))) |
| @@ -424,9 +424,9 @@ | |||
| 424 | ;; Highly recursive. INTERNAL USE ONLY. | 424 | ;; Highly recursive. INTERNAL USE ONLY. |
| 425 | (if (null root) | 425 | (if (null root) |
| 426 | nil | 426 | nil |
| 427 | (avl-tree-node-create (avl-tree-do-copy (elib-node-left root)) | 427 | (avl-tree-node-create (avl-tree-do-copy (avl-tree-node-left root)) |
| 428 | (avl-tree-do-copy (elib-node-right root)) | 428 | (avl-tree-do-copy (avl-tree-node-right root)) |
| 429 | (elib-node-data root) | 429 | (avl-tree-node-data root) |
| 430 | (avl-tree-node-balance root)))) | 430 | (avl-tree-node-balance root)))) |
| 431 | 431 | ||
| 432 | 432 | ||
| @@ -482,24 +482,24 @@ If there is no such element in the tree, the value is nil." | |||
| 482 | (while (and node | 482 | (while (and node |
| 483 | (not found)) | 483 | (not found)) |
| 484 | (cond | 484 | (cond |
| 485 | ((funcall compare-function data (elib-node-data node)) | 485 | ((funcall compare-function data (avl-tree-node-data node)) |
| 486 | (setq node (elib-node-left node))) | 486 | (setq node (avl-tree-node-left node))) |
| 487 | ((funcall compare-function (elib-node-data node) data) | 487 | ((funcall compare-function (avl-tree-node-data node) data) |
| 488 | (setq node (elib-node-right node))) | 488 | (setq node (avl-tree-node-right node))) |
| 489 | (t | 489 | (t |
| 490 | (setq found t)))) | 490 | (setq found t)))) |
| 491 | 491 | ||
| 492 | (if node | 492 | (if node |
| 493 | (elib-node-data node) | 493 | (avl-tree-node-data node) |
| 494 | nil))) | 494 | nil))) |
| 495 | 495 | ||
| 496 | (defun avl-tree-map (__map-function__ tree) | 496 | (defun avl-tree-map (__map-function__ tree) |
| 497 | "Apply MAP-FUNCTION to all elements in the avl tree TREE." | 497 | "Apply MAP-FUNCTION to all elements in the avl tree TREE." |
| 498 | (avl-tree-mapc | 498 | (avl-tree-mapc |
| 499 | (function (lambda (node) | 499 | (function (lambda (node) |
| 500 | (elib-node-set-data node | 500 | (avl-tree-node-set-data node |
| 501 | (funcall __map-function__ | 501 | (funcall __map-function__ |
| 502 | (elib-node-data node))))) | 502 | (avl-tree-node-data node))))) |
| 503 | (avl-tree-root tree))) | 503 | (avl-tree-root tree))) |
| 504 | 504 | ||
| 505 | (defun avl-tree-first (tree) | 505 | (defun avl-tree-first (tree) |
| @@ -507,9 +507,9 @@ If there is no such element in the tree, the value is nil." | |||
| 507 | (let ((node (avl-tree-root tree))) | 507 | (let ((node (avl-tree-root tree))) |
| 508 | (if node | 508 | (if node |
| 509 | (progn | 509 | (progn |
| 510 | (while (elib-node-left node) | 510 | (while (avl-tree-node-left node) |
| 511 | (setq node (elib-node-left node))) | 511 | (setq node (avl-tree-node-left node))) |
| 512 | (elib-node-data node)) | 512 | (avl-tree-node-data node)) |
| 513 | nil))) | 513 | nil))) |
| 514 | 514 | ||
| 515 | (defun avl-tree-last (tree) | 515 | (defun avl-tree-last (tree) |
| @@ -517,16 +517,16 @@ If there is no such element in the tree, the value is nil." | |||
| 517 | (let ((node (avl-tree-root tree))) | 517 | (let ((node (avl-tree-root tree))) |
| 518 | (if node | 518 | (if node |
| 519 | (progn | 519 | (progn |
| 520 | (while (elib-node-right node) | 520 | (while (avl-tree-node-right node) |
| 521 | (setq node (elib-node-right node))) | 521 | (setq node (avl-tree-node-right node))) |
| 522 | (elib-node-data node)) | 522 | (avl-tree-node-data node)) |
| 523 | nil))) | 523 | nil))) |
| 524 | 524 | ||
| 525 | (defun avl-tree-copy (tree) | 525 | (defun avl-tree-copy (tree) |
| 526 | "Return a copy of the avl tree TREE." | 526 | "Return a copy of the avl tree TREE." |
| 527 | (let ((new-tree (avl-tree-create | 527 | (let ((new-tree (avl-tree-create |
| 528 | (avl-tree-cmpfun tree)))) | 528 | (avl-tree-cmpfun tree)))) |
| 529 | (elib-node-set-left (avl-tree-dummyroot new-tree) | 529 | (avl-tree-node-set-left (avl-tree-dummyroot new-tree) |
| 530 | (avl-tree-do-copy (avl-tree-root tree))) | 530 | (avl-tree-do-copy (avl-tree-root tree))) |
| 531 | new-tree)) | 531 | new-tree)) |
| 532 | 532 | ||
| @@ -535,7 +535,7 @@ If there is no such element in the tree, the value is nil." | |||
| 535 | (nreverse | 535 | (nreverse |
| 536 | (let ((treelist nil)) | 536 | (let ((treelist nil)) |
| 537 | (avl-tree-mapc (function (lambda (node) | 537 | (avl-tree-mapc (function (lambda (node) |
| 538 | (setq treelist (cons (elib-node-data node) | 538 | (setq treelist (cons (avl-tree-node-data node) |
| 539 | treelist)))) | 539 | treelist)))) |
| 540 | (avl-tree-root tree)) | 540 | (avl-tree-root tree)) |
| 541 | treelist))) | 541 | treelist))) |
| @@ -551,7 +551,7 @@ If there is no such element in the tree, the value is nil." | |||
| 551 | 551 | ||
| 552 | (defun avl-tree-clear (tree) | 552 | (defun avl-tree-clear (tree) |
| 553 | "Clear the avl tree TREE." | 553 | "Clear the avl tree TREE." |
| 554 | (elib-node-set-left (avl-tree-dummyroot tree) nil)) | 554 | (avl-tree-node-set-left (avl-tree-dummyroot tree) nil)) |
| 555 | 555 | ||
| 556 | (provide 'avl-tree) | 556 | (provide 'avl-tree) |
| 557 | 557 | ||