--- stack/stack.c 2002/02/06 11:15:05 1.38 +++ stack/stack.c 2002/02/06 11:39:20 1.39 @@ -315,7 +315,7 @@ printf(" "); stack_head=stack_head->next; } - printf("] "); + printf("]"); break; default: printf("#", (stack_head->item->content.ptr)); @@ -603,6 +603,33 @@ } +/* Reverse a list */ +extern void rev(environment *env){ + stackitem *old_head, *new_head, *item; + + if((env->head)==NULL) { + printerr("Too Few Arguments"); + env->err=1; + return; + } + + if(env->head->item->type!=list) { + printerr("Bad Argument Type"); + env->err=2; + return; + } + + old_head=(stackitem *)(env->head->item->content.ptr); + new_head=NULL; + while(old_head != NULL){ + item=old_head; + old_head=old_head->next; + item->next=new_head; + new_head=item; + } + env->head->item->content.ptr=new_head; +} + /* Compares two elements by reference. */ extern void eq(environment *env) {