Doubly-linked list/Traversal: Difference between revisions

From Rosetta Code
Content added Content deleted
(add JavaScript)
m (→‎{{header|JavaScript}}: xref corrections)
Line 3: Line 3:


=={{header|JavaScript}}==
=={{header|JavaScript}}==
See [[Doubly-Linked_List_(element)#JavaScript]]. The <code>traverse()</code> and <code>print()</code> functions have been inherited from [[Singly-Linked_List_(traversal)#JavaScript]].
See [[Doubly-Linked List (element)#JavaScript]]. The <code>traverse()</code> and <code>print()</code> functions have been inherited from [[Singly-Linked List (traversal)#JavaScript]].
<lang javascript>DoublyLinkedList.prototype.getTail = function() {
<lang javascript>DoublyLinkedList.prototype.getTail = function() {
var tail;
var tail;

Revision as of 15:38, 9 October 2009

Task
Doubly-linked list/Traversal
You are encouraged to solve this task according to the task description, using any language you may know.

Traverse from the beginning of a doubly-linked list to the end, and from the end to the beginning.

JavaScript

See Doubly-Linked List (element)#JavaScript. The traverse() and print() functions have been inherited from Singly-Linked List (traversal)#JavaScript. <lang javascript>DoublyLinkedList.prototype.getTail = function() {

   var tail;
   this.traverse(function(node){tail = node;});
   return tail;

} DoublyLinkedList.prototype.traverseBackward = function(func) {

   func(this);
   if (this.prev() != null)
       this.prev().traverseBackward(func);

} DoublyLinkedList.prototype.printBackward = function() {

   this.traverseBackward( function(node) {print(node.value())} );

}

var head = createDoublyLinkedListFromArray([10,20,30,40]); head.print(); head.getTail().printBackward();</lang>

outputs:

10
20
30
40
40
30
20
10

Uses the print() function from Rhino or SpiderMonkey.