C++ 链表知识总结
1、创建链表
一般创建链表都会设置一个虚拟头节点,也叫做哨兵
创建链表需要一个头节点,一个当前节点,而头节点设置为哨兵的话,当前节点就可以直接初始化为头节点,最后返回哨兵的next即可,这样的做法可以简化代码,因为这样就不用当前处理当前节点为空节点的情况。
链接:https://www.nowcoder.com/questionTerminal/d8b6b4358f774294a89de2a6ac4d9337?answerType=1&f=discussion
来源:牛客网
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
ListNode *vhead = new ListNode(-1);
ListNode *cur = vhead;
while (pHead1 && pHead2) {
if (pHead1->val <= pHead2->val) {
cur->next = pHead1;
pHead1 = pHead1->next;
}
else {
cur->next = pHead2;
pHead2 = pHead2->next;
}
cur = cur->next;
}
cur->next = pHead1 ? pHead1 : pHead2;
return vhead->next;
}
};
2、返回链表的某个节点
实际意思是在不改变链表的情况下,返回对应位置的指针,实际上它表示以该位置为头节点的新子链表