删除链表中所有值为k的节点
2015-07-24 11:28
302 查看
1. 问题描述
给定一个单链表,删除其中值为k的所有节点。例如:1→2→6→3→4→5→61 \to 2 \to 6 \to 3 \to 4 \to 5 \to 6,删除其中值为6的节点,返回:1→2→3→4→51 \to 2 \to 3 \to 4 \to 5 。2. 方法与思路
这是一个简单的链表操作题。删除是要考虑的节点所在的位置(头部,中间和尾部),分开处理一下好了。主要过程如下描述:I. while head−>val≠targetwhile head->val \neq target
head = head->next
II. 判断head是否为空判断 head是否为空
if head=NULLif head = NULL return NULL;
III. 遍历剩余链表,删除中间和尾部值为k的节点。
c++代码如下:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ ListNode* removeElements(ListNode* head, int val) { if(head == NULL) return NULL; while(head && head->val == val) { ListNode *pre = head; head = head->next; delete pre; } if(head == NULL) return head; ListNode *p = head; while(p && p->next) { ListNode *q = p->next; if(q->val == val) { p->next = q->next; delete q; } else p = p->next; } return head; }
相关文章推荐
- C#基础系列——小话泛型
- hive使用lateral view explode和split将一行拆多行
- 关机命令
- RHEL六(监控和管理Linux进程)
- OCR文字识别HTTP restapi接口设计
- 关于程序员的面试你怎么看待
- BZOJ 1008 越狱
- 使用Dropzone上传图片及回显示例
- tcpdump非常实用的抓包实例
- 简单的游戏逻辑,用C++ console来实现简单的逻辑
- 一种基于Storm的可扩展即时数据处理架构思考
- 3.4——从无头单链表中删除结点
- C++对象模型4--有重写的单继承
- Myeclipse导出jar文件图片路径问题
- hello-win程序入门win32基本窗口框架全解析
- linux添加交换分区swap增加虚拟内存
- 为什么要使用NSURLSession
- Algorithms—25.Reverse Nodes in k-Group
- C++中的数组指针与数组引用
- .net Event/Delegate Simple Demo