*** empty log message ***
[chuck-blob.git] / v2 / test / p67.ck
blob9a2e6ad8accada5427fd09ed347dfbe3a33ff91d
1 // linked list stack;
3 class ListItem { 
4         int data;
5         null @=> ListItem @ next;
6         fun void push ( ListItem it ) { 
7                 if ( next != null ) next.push(it);
8                 else it @=> next;
9         } 
10         fun int isLast() { 
11                 return ( next == null ) ? 1 : 0 ;
12         }
14         fun ListItem pop () { 
15                 if ( next.isLast() != 0) {
16                         next @=> ListItem @ n;
17                         null @=> next; 
18                         return n;
19                 }
20                 else return next.pop();
21         }
25 class Stack { 
26         int num;
27         ListItem @ root;
28         fun void push( ListItem it) { 
29                 if ( root == null ) it @=> root;
30                 else root.push(it);
31         }
32         fun ListItem pop() { 
33                 if ( root == null ) return null;
34                 else if ( root.isLast() != 0 ) { 
35                         root @=> ListItem @ ret ;
36                         null @=> root;
37                         return ret;
38                 }
39                 else { 
40                         return root.pop();
41                 }
42         }
45 Stack f;
47 f.push( ListItem n );
48 f.push( ListItem p );
50 <<<"success">>>;