移除链表元素
点击链接做题
思路1:遍历链表,在原链表执行删除指定节点的操作。
思路2:创建新链表,将原链表中值不为val的结点尾插到新链表。
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/
typedef struct ListNode ListNode;
struct ListNode* removeElements(struct ListNode* head, int val) {//创建新链表ListNode* newHead,*newTail;newHead = newTail = NULL;//遍历原链表ListNode* pcur = head;while(pcur){//找值不为val的结点,往新链表中进行尾插if(pcur->val != val){//尾插//链表为空if(newHead == NULL){newHead = newTail = pcur;}//链表不为空else{newTail->next = pcur;newTail = newTail->next;}}pcur = pcur->next;}if(newTail){newTail->next = NULL;}return newHead;}