C\C++刷题ADY3
创始人
2024-02-05 03:47:58
0

题目来源:力扣

1.第一题

203. 移除链表元素 - 力扣(LeetCode)

思路分析:(不带哨兵位的头节点)

每次去分析一个节点,

如果节点不是存的是6,就拿节点来尾插

如果节点存的不是6,就把节点free掉

 思路分析:(带哨兵位的头节点)

带哨兵位的头节点的优势之一就是方便尾插

也就是说不需要判断开始尾插的时候是不是为NULL

不带哨兵位头节点需要判断第一插入的时候的节点是不是NULL,以此区分后续的尾插

PS:带哨兵位的思路请读者自己完成,尾插的思路并没有改变,变的仅仅是多了一个哨兵头节点,方便尾插

带哨兵位的头节点仅仅只是方便尾插,其余的操作还是不带哨兵位的头节点的单链表更舒服,实际和OJ题目中几乎不用带哨兵位的头节点(除非明确说明)

参考代码(不带哨兵位的头节点):

struct ListNode* removeElements(struct ListNode* head, int val)
{struct ListNode* cur = head;struct ListNode* newhead;struct ListNode* tail;newhead = tail = NULL;while (cur){if (cur->val != val){if (tail == NULL){newhead = tail = cur;}else{tail->next = cur;tail = tail->next;}cur = cur->next;}else{struct ListNode* next = cur->next;free(cur);cur = next;}}if(tail){tail->next = NULL;}return newhead;
}

2.第二题

21. 合并两个有序链表 - 力扣(LeetCode)

 

 思路分析:

给一个head指针

给一个tail指针

取较小的尾插

参考代码1(不带哨兵位的头节点):

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
{if(list1==NULL)return list2;if(list2==NULL)return list1;struct ListNode* head;struct ListNode* tail;head=tail=NULL;//取小的尾插while(list1 && list2){if(list1->val < list2->val){if(tail == NULL){head = tail = list1;}else{tail->next = list1;tail = tail->next;}list1 = list1->next;}else{if(tail == NULL){head = tail = list2;}else{tail->next = list2;tail = tail->next;}list2 = list2->next;}}if(list1)tail->next = list1;if(list2)tail->next = list2;return head;}

参考代码2(带哨兵位的头节点):

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
{struct ListNode*guard,*tail;guard = tail = (struct ListNode*)malloc(sizeof(struct ListNode));guard->next = NULL;//取小的尾插while(list1 && list2){if(list1->valval){tail->next = list1;tail = tail->next;list1 = list1->next;}else{tail->next = list2;tail = tail->next;list2 = list2->next;}}if(list1){tail->next= list1;}if(list2){tail->next=list2;}struct Node* head =guard->next;free(guard);return head;}

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...