вы можете сделать инверсию строки на месте, используя что-то вроде этого:
void reverse_str(char* str)
{
int len = strlen(str),i;
for(i = 0; i < len / 2; i++)
{
char c = str[i];
str[i] = str[len - 1 - i];
str[len - 1 - i] = c;
}
}
Однако вышеприведенная функция на самом деле является рекурсивной, если вы хотите сделать ее рекурсивной, вы можете использовать двоичную рекурсию для перехода от внешних символов к внутренним, используя len
, чтобы определить, когда остановиться.
затем, используя ваш связанный список, можете сделать (отредактировано, чтобы сделать рекурсивным ...):
void reverse(struct Node* p)
{
if(!p)
return;
reverse_str(p->array);
printf("%s",p->array);
reverse(p->next);
}