球迷类的网站如何做/江苏seo平台
文章目录
- 递归
- 非递归
1.递归
用C语言实现字符串逆序,不使用库函数,首先采用递归的方法
代码如下(示例):
//1.递归//当遍历至最后一位字符串时,来到上面if处,满足*p == '\0',开始打印
//在栈区,变量先进后出,可以实现逆序
#include<stdio.h>
char reverse_t(char* p)
{if (*p == '\0')//如果指针指向\0,说明遍历字符串的所有字符,此时返回return 0;return 0;elsereverse_t(p + 1);//如果还没有到字符串末尾,则指针+1,来到下一个字符处printf("%c", *p);
}
int main()
{char a[] = { 0 };while (scanf("%s", a) != EOF){reverse_t(a);printf("\n");}return 0;
}
2.非递归
依旧单独构造函数,采用指针的方法
代码如下(示例):
#include<stdio.h>
#include<string.h>
#include<assert.h>
void reverse_t(char* p)
{assert(p);char* left = p;char* right = p + (strlen(p) - 1);//求出字符串最后一位指针所指的字符while (left < right)//遍历时左边小于右边,当左右相等,也不用再继续{char temp = *left;//交换左右两边的字符,实现逆序*left = *right;*right = temp;left++;//左右不断逼近,直至左边大于等于右边,循环停止right--;}
}
int main()
{char a[] = { 0 };while (scanf("%s", a) != EOF){reverse_t(a);printf("%s", a);printf("\n");}return 0;
}
总结
无论递归还是非递归,都采用单独构造函数的方式,并且使用指针实现。