Leetcode题库203.移除链表元素(尾指针填充 / 虚头指针定义 c实现)
生活随笔
收集整理的這篇文章主要介紹了
Leetcode题库203.移除链表元素(尾指针填充 / 虚头指针定义 c实现)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 思路
- 方法1
- 方法2
- 代碼
- 方法1
思路
方法1
下面提供了方法1的代碼,可供參考
ret指針做返回鏈表的頭指針,last做返回鏈表的尾指針
第一步:找頭
使用指針p遍歷鏈表,找到第一個val值不為給定val值的結構體,將其賦給ret指針,并使得last指針指向當前返回指針尾部,也就是ret指針指向的地方(因為當前返回鏈表長度為1)
第二步:填尾
使用指針p遍歷鏈表,找到val值不為給定val值的結構體將其賦給last指針的next,然后調整last使其再次指向返回鏈表尾部
方法2
方法2較為簡單,未給出代碼實現
第一步:
定義一個虛的頭部指針ret,使得ret->指向head,一個遍歷指針p = ret
第二步:
若p->next->val = val,說明p->next需要被剔除,則令p = p->next->next,如此循環直至遍歷整個鏈表
最后去掉我們先前定義的虛的頭部指針,返回ret->next即可
代碼
方法1
struct ListNode* removeElements(struct ListNode* head, int val){struct ListNode *ret = NULL, *last = NULL, *p = head;while(p!=NULL){if(ret==NULL){if(p->val!=val){ret = p;p = p->next;last = ret;last->next = NULL;}else{p = p->next;}}else{if(p->val!=val){last->next = p;p = p->next;last = last->next;last->next = NULL;}else{p = p->next;}}}return ret; }總結
以上是生活随笔為你收集整理的Leetcode题库203.移除链表元素(尾指针填充 / 虚头指针定义 c实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html5_0_文章_分级_分段
- 下一篇: html_5_小作业1_超链接练习