怎樣才能逆序輸出單鏈表呢??剛剛有人考了我一道題,逆序輸出單鏈表: 我是這樣答的(下面的代碼為偽代碼,不能通過編譯):
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()); } 后來他讓我想一想還有沒有更為簡單的方法了,當(dāng)時允許我上網(wǎng),我用了幾分鐘到網(wǎng)上找了一下,沒有找到更好的辦法,如果先把鏈表逆序,再順序輸出時間復(fù)雜度更高。
我走出大樓以后,忽然想到,是遞歸呀,對是遞歸:
void printSList(slist *pList) { assert(pList); if (pList == NULL) return; if (pList->next == NULL) printf("%s", *pList); else { printSList(pList->next); printf("%s", *pList); } } 哎,人生中機會就是一瞬之間,錯過不知道下一次又是什么時候。但只要做了就會收獲,會一次比一次做的好。
|