main() { int choice,data,y; struct node *l; struct node *l2; l=0; do{ printf("1.insert\n2.print\n3.reverse\n4.rec_reverse\n"); scanf("%d",&choice); switch(choice){ case 1: scanf("%d",&data); l=append(new_node(data),l); break; case 2: print_list(l); break; case 3: l=reverse(l); print_list(l); break; case 4: l=rec_reverse(l); print_list(l); break; } scanf("%d",&y); }while(y==1); }
int main(void){ char s[MAX]; while(scanf("%s",s) == 1){ rec_reverse(s,0,strlen(s)-1); printf("%s",s); } return 0; }
static list_t* rec_reverse(list_t* new_next, list_t* current) { list_t* old_next; if (current == NULL) return new_next; else { old_next = current->next; current->next = new_next; return rec_reverse(current, old_next); } }
struct node *rec_reverse(struct node *l) { struct node *temph; struct node *temp; if(l==0) printf("There is no such a list\n"); if(l->next==0){ return l; } temph=rec_reverse(l->next); temp=temph; while(temp->next!=0) temp=temp->next; temp->next=l; l->next=0; return temph; }
void rec_reverse(char s[],int a,int b){ if(a < b){ swap(s,a,b); rec_reverse(s,a+1,b-1); } }
void reverse(list_t** list) { *list = rec_reverse(NULL, *list); }