@@ -61,7 +61,7 @@ class Solution:
61
61
def removeElements (self , head : ListNode, val : int ) -> ListNode:
62
62
dummy = ListNode(- 1 , head)
63
63
pre = dummy
64
- while pre and pre .next:
64
+ while pre.next:
65
65
if pre.next.val != val:
66
66
pre = pre.next
67
67
else :
@@ -88,7 +88,7 @@ class Solution {
88
88
public ListNode removeElements (ListNode head , int val ) {
89
89
ListNode dummy = new ListNode (- 1 , head);
90
90
ListNode pre = dummy;
91
- while (pre != null && pre . next != null ) {
91
+ while (pre. next != null ) {
92
92
if (pre. next. val != val) pre = pre. next;
93
93
else pre. next = pre. next. next;
94
94
}
@@ -118,6 +118,36 @@ public:
118
118
};
119
119
```
120
120
121
+ ### **C#**
122
+
123
+ ```cs
124
+ public class Solution {
125
+ public ListNode RemoveElements(ListNode head, int val) {
126
+ ListNode newHead = null;
127
+ ListNode newTail = null;
128
+ var current = head;
129
+ while (current != null)
130
+ {
131
+ if (current.val != val)
132
+ {
133
+ if (newHead == null)
134
+ {
135
+ newHead = newTail = current;
136
+ }
137
+ else
138
+ {
139
+ newTail.next = current;
140
+ newTail = current;
141
+ }
142
+ }
143
+ current = current.next;
144
+ }
145
+ if (newTail != null) newTail.next = null;
146
+ return newHead;
147
+ }
148
+ }
149
+ ```
150
+
121
151
### ** Go**
122
152
123
153
``` go
@@ -152,10 +182,10 @@ func removeElements(head *ListNode, val int) *ListNode {
152
182
*/
153
183
154
184
function removeElements(head : ListNode | null , val : number ): ListNode | null {
155
- let dummy: ListNode = new ListNode (0 , head );
185
+ const dummy: ListNode = new ListNode (0 , head );
156
186
let cur: ListNode = dummy ;
157
187
while (cur .next != null ) {
158
- if (cur .next .val == val ) {
188
+ if (cur .next .val === val ) {
159
189
cur .next = cur .next .next ;
160
190
} else {
161
191
cur = cur .next ;
@@ -165,6 +195,42 @@ function removeElements(head: ListNode | null, val: number): ListNode | null {
165
195
}
166
196
```
167
197
198
+ ### ** Rust**
199
+
200
+ ``` rust
201
+ // Definition for singly-linked list.
202
+ // #[derive(PartialEq, Eq, Clone, Debug)]
203
+ // pub struct ListNode {
204
+ // pub val: i32,
205
+ // pub next: Option<Box<ListNode>>
206
+ // }
207
+ //
208
+ // impl ListNode {
209
+ // #[inline]
210
+ // fn new(val: i32) -> Self {
211
+ // ListNode {
212
+ // next: None,
213
+ // val
214
+ // }
215
+ // }
216
+ // }
217
+ impl Solution {
218
+ pub fn remove_elements (head : Option <Box <ListNode >>, val : i32 ) -> Option <Box <ListNode >> {
219
+ let mut dummy = Box :: new (ListNode { val : 0 , next : head });
220
+ let mut cur = & mut dummy ;
221
+ while let Some (mut node ) = cur . next. take () {
222
+ if node . val == val {
223
+ cur . next = node . next. take ();
224
+ } else {
225
+ cur . next = Some (node );
226
+ cur = cur . next. as_mut (). unwrap ();
227
+ }
228
+ }
229
+ dummy . next. take ()
230
+ }
231
+ }
232
+ ```
233
+
168
234
### ** ...**
169
235
170
236
```
0 commit comments