您的位置:首页 > 其它

关于字符串逆序的问题

2007-07-09 11:01 316 查看
有人考我字符串逆序的算法,我居然写不上来,懊恼死了。
当时脑海里想的是用堆栈的算法,可是又不会写,至于递归,硬是没想到。

题目:实现字符串逆序函数 reverse(char *str)
答案:

1。最简单的,不一定规范但能实现。


void reverse(char *str)




...{


if (!*str) return;


fun(str+1);


printf("%c",*str);


}

2。比较规范的C


char* reverse(char *cpSource)




...{


static char *cpTemp = NULL;


if(cpTemp == NULL) cpTemp = cpSource;


if(*(cpSource+1)) reverse(cpSource+1);


if(cpSource-cpTemp > 0)




...{


char cTemp = *cpTemp;


*cpTemp++ = *cpSource;


*cpSource = cTemp;


}


return cpSource;


}

3。另外找了个ARM汇编的版本


data segment


string1 db ' abcdefg'


count equ $-string1


string2 db count dup(?),'$'


data ends




code segment


assume cs:code,ds:data


start:mov ax,data


mov ds,ax


mov cx,count


mov si,offset string1


add si,cx


dec si


mov di,offset string2


lop1: mov al,[si]


mov [di],al


dec si


inc di


loop lop1


mov dx,offset string2


mov ah,9


int 21h


mov ah,4ch


int 21h


code ends


end start

附:参考地址
这里就给汇编的,C的太多了,随便搜搜就能找到。
『Win32/Win64编程』 > 【讨论】来个简单题目,看哪位兄弟写的最好!
基本汇编语言程序设计 - 字符串逆序显示
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: