您的位置:首页 > 其它

203. Remove Linked List Elements。

2017-09-16 21:11 330 查看
Remove all elements from a linked list of integers that have value val.

Example

Given: 1 –> 2 –> 6 –> 3 –> 4 –> 5 –> 6, val = 6

Return: 1 –> 2 –> 3 –> 4 –> 5

很基础的题,对链表进行遍历查找删除节点,由于给的节点第一个就有数据,这其实不好计算,可以使用一个存放空数据的空的头结点来简化计算过程。

#include <iostream>
using namespace std;

/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     ListNode *next;
*     ListNode(int x) : val(x), next(NULL) {}
* };
*/

struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};

class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
ListNode temp(0);
temp.next = head;//自己创造一个头结点
ListNode* p = &temp;
ListNode* q = head;

while(q) {
if(q->val == val) {
p->next = q->next;
} else {
p = p->next;
}
q = q->next;
}
return temp.next;
}
};

int main() {
Solution s;
ListNode node1(1);
ListNode node2(2);
ListNode node3(6);
ListNode node4(3);
ListNode node5(4);
ListNode node6(5);
ListNode node7(6);

node1.next = &node2;
node2.next = &node3;
node3.next = &node4;
node4.next = &node5;
node5.next = &node6;
node6.next = &node7;

s.removeElements(&node1,6);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: