【数据结构---4】删除链表中等于给定值 val 的所有节点

题目描述:

删除链表中等于给定值 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;
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值