mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
Merge pull request #1671 from Jack-Zhang-1314/patch-4
update 707.设计链表 about rust
This commit is contained in:
@ -1240,6 +1240,94 @@ class MyLinkedList() {
|
||||
}
|
||||
```
|
||||
|
||||
Rust:
|
||||
|
||||
```rust
|
||||
#[derive(Debug)]
|
||||
pub struct MyLinkedList {
|
||||
pub val: i32,
|
||||
pub next: Option<Box<MyLinkedList>>,
|
||||
}
|
||||
|
||||
impl MyLinkedList {
|
||||
fn new() -> Self {
|
||||
// 增加头节点
|
||||
MyLinkedList { val: 0, next: None }
|
||||
}
|
||||
|
||||
fn get(&self, index: i32) -> i32 {
|
||||
if index < 0 {
|
||||
return -1;
|
||||
}
|
||||
let mut i = 0;
|
||||
let mut cur = &self.next;
|
||||
while let Some(node) = cur {
|
||||
if i == index {
|
||||
return node.val;
|
||||
}
|
||||
i += 1;
|
||||
cur = &node.next;
|
||||
}
|
||||
-1
|
||||
}
|
||||
|
||||
fn add_at_head(&mut self, val: i32) {
|
||||
let new_node = Box::new(MyLinkedList {
|
||||
val,
|
||||
next: self.next.take(),
|
||||
});
|
||||
self.next = Some(new_node);
|
||||
}
|
||||
|
||||
fn add_at_tail(&mut self, val: i32) {
|
||||
let new_node = Box::new(MyLinkedList { val, next: None });
|
||||
let mut last_node = &mut self.next;
|
||||
while let Some(node) = last_node {
|
||||
last_node = &mut node.next;
|
||||
}
|
||||
*last_node = Some(new_node);
|
||||
}
|
||||
|
||||
fn add_at_index(&mut self, index: i32, val: i32) {
|
||||
if index <= 0 {
|
||||
self.add_at_head(val);
|
||||
} else {
|
||||
let mut i = 0;
|
||||
let mut cur = &mut self.next;
|
||||
while let Some(node) = cur {
|
||||
if i + 1 == index {
|
||||
let new_node = Box::new(MyLinkedList {
|
||||
val,
|
||||
next: node.next.take(),
|
||||
});
|
||||
node.next = Some(new_node);
|
||||
break;
|
||||
}
|
||||
i += 1;
|
||||
cur = &mut node.next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn delete_at_index(&mut self, index: i32) {
|
||||
if index < 0 {
|
||||
return;
|
||||
}
|
||||
|
||||
let mut i = 0;
|
||||
let mut cur = self;
|
||||
while let Some(node) = cur.next.take() {
|
||||
if i == index {
|
||||
cur.next = node.next;
|
||||
break;
|
||||
}
|
||||
i += 1;
|
||||
cur.next = Some(node);
|
||||
cur = cur.next.as_mut().unwrap();
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
-----------------------
|
||||
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
||||
|
Reference in New Issue
Block a user