mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +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>
|
<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