使用C語言遞歸與非遞歸實(shí)現(xiàn)字符串反轉(zhuǎn)函數(shù)char *reverse(char *str)的方法
代碼如下所示:
// 遞歸實(shí)現(xiàn)字符串反轉(zhuǎn)
char *reverse(char *str)
{
if( !str )
{
return NULL;
}
int len = strlen(str);
if( len > 1 )
{
char ctemp =str[0];
str[0] = str[len-1];
str[len-1] = '/0';// 最后一個(gè)字符在下次遞歸時(shí)不再處理
reverse(str+1); // 遞歸調(diào)用
str[len-1] = ctemp;
}
return str;
}
// 非遞歸實(shí)現(xiàn)字符串反轉(zhuǎn)
char *reverse(char *str)
{
if( !str )
{
return NULL;
}
int len = strlen(str);
char temp;
for( int i = 0; i < len / 2; i++ )
{
// 交換前后兩個(gè)相應(yīng)位置的字符
temp = *(str + i);
*(str + i) = *(str + len - 1 - i);
*(str + len - 1 - i) = temp;
}
return str;
}
int _tmain(int argc, _TCHAR* argv[])
{
char src[] = {"abcdef"};
char *pdest = reverse(src);
getchar();
return 0;
}
相關(guān)文章
C/C++詳解實(shí)現(xiàn)二層轉(zhuǎn)發(fā)
數(shù)據(jù)鏈路層是開放系統(tǒng)互連 (OSI) 模型中的第二層,該層用于通過 LAN 等單一網(wǎng)絡(luò)進(jìn)行通信的節(jié)點(diǎn),第二層數(shù)據(jù)包不能從一個(gè)網(wǎng)絡(luò)傳輸?shù)搅硪粋€(gè)網(wǎng)絡(luò)。而二層轉(zhuǎn)發(fā)是根據(jù)報(bào)文的目的MAC直接進(jìn)行轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)過程中不用對(duì)報(bào)文的頭部做任何的修改2022-05-05
C語言文件操作中 fgets與fputs 函數(shù)詳解
這篇文章主要介紹了C語言文件操作中 fgets與fputs 函數(shù)詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06
Qt中QMapIterator檢測(cè)是否為空的實(shí)現(xiàn)
本文主要介紹了Qt中QMapIterator檢測(cè)是否為空的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10
對(duì)for循環(huán)中表達(dá)式和循環(huán)體的執(zhí)行順序詳解
今天小編就為大家分享一篇對(duì)for循環(huán)中表達(dá)式和循環(huán)體的執(zhí)行順序詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06
超詳細(xì)VScode調(diào)試教程tasks.json和launch.json的設(shè)置
vscode是一個(gè)輕量級(jí)的文本編輯器,但是它的擴(kuò)展插件可以讓他拓展成功能齊全的IDE,這其中就靠的是tasks.json和launch.json的配置,下面這篇文章主要給大家介紹了關(guān)于超詳細(xì)VScode調(diào)試教程tasks.json和launch.json設(shè)置的相關(guān)資料,需要的朋友可以參考下2022-10-10
c/c++靜態(tài)庫之間相互調(diào)用的實(shí)戰(zhàn)案例
C++調(diào)用C的函數(shù)比較簡單,直接使用extern "C" {}告訴編譯器用C的規(guī)則去編譯C代碼就可以了,下面這篇文章主要給大家介紹了關(guān)于c/c++靜態(tài)庫之間相互調(diào)用的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08

