Пример #1
0
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);
}
Пример #2
0
int main(void){
  char s[MAX];
  while(scanf("%s",s) == 1){
      rec_reverse(s,0,strlen(s)-1);
      printf("%s",s);
  }
    return 0;
}
Пример #3
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);
	}
}
Пример #4
0
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;		
}	
Пример #5
0
void rec_reverse(char s[],int a,int b){
  if(a < b){
    swap(s,a,b);
    rec_reverse(s,a+1,b-1);
  }
}
Пример #6
0
void reverse(list_t** list)
{
	*list = rec_reverse(NULL, *list);
}