| 
 
 |   | 

| List | Stack | |||
|---|---|---|---|---|
| create | O(1) | O(1) | ||
| delete | O(1) | O(1) | ||
| add | O(n) | O(1) | ||
| remove | O(n) | O(1) | ||
| traversal | O(1) | na | ||
| navigation | O(1) | na | ||
| dynamic | No | No | 
| List | Stack | Stack | ||||
|---|---|---|---|---|---|---|
| (Array) | (List) | |||||
| create | O(1) | O(1) | O(1) | |||
| delete | O(1) | O(1) | O(1) | |||
| add | O(n) | O(1) | O(1) | |||
| remove | O(n) | O(1) | O(1) | |||
| traversal | O(1) | na | na | |||
| navigation | O(1) | na | na | |||
| dynamic | No | No | Yes | 
| List | Stack | Stack | Stack | |||||
|---|---|---|---|---|---|---|---|---|
| (Array) | (List) | (DArray) | ||||||
| create | O(1) | O(1) | O(1) | O(1) | ||||
| delete | O(1) | O(1) | O(1) | O(1) | ||||
| add | O(n) | O(1) | O(1) | O(1)* | ||||
| remove | O(n) | O(1) | O(1) | O(1)* | ||||
| traversal | O(1) | na | na | na | ||||
| navigation | O(1) | na | na | na | ||||
| dynamic | No | No | Yes | Yes | 
* Amortized.
| int f() int i, j double x // whatever 
 | 
 
 | 
| 
 
 | 
 
 | 
a()
  a() calls b()
    b() calls c()
      c() returns
    b() returns
  a() returns
void reverse(T a[], int n, int i)
  if i < n
    T c = a[i]
    reverse(a, n, i + 1)
    a[n - (i + 1)] = c
