剛剛有人考了我一道題,逆序輸出單鏈表:
我是這樣答的(下面的代碼為偽代碼,不能通過編譯):
void printSList(slist *pList)
{
assert(pList);
if (pList == NULL)
return;
string str;
while (pList)
{
str = string(*pList) + str;
pList = pList->next;
}
printf("%s", str.c_str());
}
后來他讓我想一想還有沒有更為簡(jiǎn)單的方法了,當(dāng)時(shí)允許我上網(wǎng),我用了幾分鐘到網(wǎng)上找了一下,沒有找到更好的辦法,如果先把鏈表逆序,再順序輸出時(shí)間復(fù)雜度更高。
我走出大樓以后,忽然想到,是遞歸呀,對(duì)是遞歸:
void printSList(slist *pList)
{
assert(pList);
if (pList == NULL)
return;
if (pList->next == NULL)
printf("%s", *pList);
else
{
printSList(pList->next);
printf("%s", *pList);
}
}
哎,人生中機(jī)會(huì)就是一瞬之間,錯(cuò)過不知道下一次又是什么時(shí)候。但只要做了就會(huì)收獲,會(huì)一次比一次做的好。吃飯去了...
posted on 2008-02-29 11:43
胡滿超 閱讀(10364)
評(píng)論(19) 編輯 收藏 引用