According to Knuth's definition, a B-tree of order m (the maximum number of children for each node) is a tree which satisfies the following properties:
(1) Every node has at most m children.
(2) Every node (except root) has at least ⌈m⁄2⌉ children.
(3) The root has at least two children if it is not a leaf node.
(4) A non-leaf node with k children contains k−1 keys.
(5) All leaves appear in the same level, and carry information.
Source: Wikipedia
Some visualizations of B-Trees look like this:
From this visualization, I would think that each node has an array datastructure (or at least something similar).
Others look like this:
This looks rather as a list-like datastructure.
So my question is:
Which datastructure do B-trees use?
Examples for the usage in my algorithms class were databases and filesystems. Does anybody know how SQLite implements B-tree nodes? Or ext3? Or any other (well-known) real-world example?