【数据结构---4】在线OJ练习题

题目描述:

删除链表中等于给定值 val 的所有节点

示例:

输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */

思路分析:

1.创建一个结果链表,作为最后的结果返回
2.遍历原来的链表,如果当前节点保存的值和要删除的值不相等,把该节点保存到结果链表中
3.结果链表的最后一个节点的next要指向NULL

代码示例:

struct ListNode* removeElements(struct ListNode* head, int val)
{
	 struct ListNode* pCur = head;
	 struct ListNode* result = NULL;//结果链表的第一个节点
	 struct ListNode* last = NULL;//结果链表的最后一个节点
	 while (pCur != NULL)
	 {
		  if (pCur->val != val)
		  {
			   if (last==NULL)
			   {
				    result = last=pCur;
			   }
			   else
			   {
				   last->next=pCur;
				   last = pCur;
			   }
		  }
		  pCur = pCur->next;
	 }
	 if (last != NULL)
	 {
		  last->next = NULL;
	 }
	 return result;
}

猜你喜欢

转载自blog.csdn.net/Austin_Yan/article/details/89761627
今日推荐