面試題 從尾到頭列印鍊錶 鍊錶中倒數第K個結點

2021-07-30 05:54:01 字數 865 閱讀 8217

從尾到頭列印鍊錶

鍊錶結構體:

struct node

pnode;

思路:一般列印時不應該改變鍊錶本身的結構,也就是說第乙個遍歷到最後乙個,最後乙個節點第乙個輸出。後進先出,非遞迴應該用棧。

遞迴:(缺點:當鍊表過長時,會導致遞迴層次太深)

//從尾到頭列印鍊錶

void printlistreversingly(pnode* phead)

printf("%d ", phead->data);

}}

非遞迴:(用棧實現)

//非遞迴從尾到頭列印鍊錶

void printlistreversingly_nor(pnode* phead)

while (!nodes.empty())

}

鍊錶倒數第k個結點

思路:2個指標,第乙個指標走k-1步走到正數第k個結點,然後第二個指標再與第乙個指標一步一步走,當第乙個指標走到尾的時候,第二個指標就為倒數第k個結點。

注意:1.頭結點為空的條件

2.如果此鍊錶結點總數少於k,則走k-1步會導致崩潰

3.如果輸入k=0,由於k為乙個unsigned int,k-1為乙個特別大的數字,會導致程式崩潰

**:

pnode findlastknode(pnode* phead,int k)

while (k--)

pfast = pfast->next;

} while (pfast)

return pslow;

}

面試題4 從尾到頭列印鍊錶

方法一 利用棧實現 c include stdafx.h include include using namespace std 鍊錶中的結點型別 struct listnode 從尾到頭列印鍊錶 void printlinkedlistreversely listnode phead while ...

面試題5 從尾到頭列印鍊錶

方法一 使用棧 html view plain copy include stack include stdio.h typedef struct listnode listnode listnode createlistnode int value void connectlistnode lis...

面試題5 從尾到頭列印鍊錶

題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個節點的值。鍊錶定義結構如下 struct listnode 通常遍歷的順序是從頭到尾的順序,可輸出的順序確是從尾到頭。也就是說第乙個遍歷到的節點最後乙個輸出,而最後乙個遍歷到的節點第乙個輸出。這就是典型的 後進先出 我們可以用棧實現這種順序。每經過...