  We consider unidirectional data streams with restricted access, such as
read-only and write-only streams. For read-write streams, we also introduce a
new complexity measure called expansion, the ratio between the space used on
the stream and the input size. We give tight bounds for the complexity of
reversing a stream of length $n$ in several of the possible models. In the
read-only and write-only model, we show that $p$-pass algorithms need memory
space ${\Theta}(n/p)$. But if either the output stream or the input stream is
read-write, then the complexity falls to ${\Theta}(n/p^2)$. It becomes
$polylog(n)$ if $p = O(log n)$ and both streams are read-write. We also study
the complexity of sorting a stream and give two algorithms with small
expansion. Our main sorting algorithm is randomized and has $O(1)$ expansion,
$O(log n)$ passes and $O(log n)$ memory.
