1. 程式人生 > >C++關於鏈表的幾個常見面試題

C++關於鏈表的幾個常見面試題

ext int 偏移 倒數 list tail 創建 null lse

1、從尾到頭打印鏈表

2、刪除鏈表節點

3、鏈表中倒數第K個節點

4、反轉鏈表

5、合並兩個排序的鏈表

6、兩個鏈表的第一個公共節點

最基本的先上,往鏈表的末尾添加節點:

ListNode *AddToTail(ListNode**pHead, int data)
{

//創建新節點將數據保存下來
ListNode *pNew = new ListNode();
pNew->m_data = data;
pNew->m_pNext = NULL;

//頭節點為空,則指向新節點,組成有一個節點的鏈表
if (*pHead == NULL)
{
*pHead = pNew;
}
else
{

//鏈表有部分數據的的話,定義指向頭節點的指針偏移到鏈表的尾部
ListNode *pNode = *pHead;
while (pNode->m_pNext != NULL)
{
pNode = pNode->m_pNext;
}

//在鏈表的尾部連接上新的節點
pNode->m_pNext = pNew;
}
return *pHead; //返回整條鏈表
}

C++關於鏈表的幾個常見面試題