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