设计一个单链表,数据类型包括初始化,求单链表长度,插入,删除,取数据元素
时间: 2025-01-04 14:38:32 浏览: 12
设计一个单链表的数据结构通常会包含以下几个关键操作:
1. **初始化** (构造函数): 创建一个新的空链表作为起点,表示链表的第一个节点是 `null`,因为单链表只有一个头结点。
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
```
或者在Java中:
```java
class LinkedList {
Node head;
// ...
}
```
2. **求单链表长度** (getLength): 需遍历整个链表计算节点数,若采用迭代方式:
```python
def get_length(self):
count = 0
current = self.head
while current is not None:
count += 1
current = current.next
return count
```
或 Java 中:
```java
int getLength() {
int length = 0;
Node node = head;
while (node != null) {
length++;
node = node.next;
}
return length;
}
```
3. **插入** (insert): 可以提供两个方法,一个是插入到链表头部,另一个是在指定位置插入。例如,在链表头部插入:
```python
def insert_at_head(self, data):
new_node = Node(data)
new_node.next = self.head
self.head = new_node
```
同理,Java 写法:
```java
void insert(int index, int data) {
if (index == 0) {
newNode = new Node(data);
newNode.next = head;
head = newNode;
} else {
// Insert at specified position
}
}
```
4. **删除** (delete): 删除节点有两种情况,一是删除头部节点,二是删除特定值的节点。如删除头部节点:
```python
def delete_head(self):
if self.head is not None:
self.head = self.head.next
```
Java 版本:
```java
void deleteFirst() {
if (head != null) {
head = head.next;
}
}
void deleteByValue(int value) {
Node current = head;
while (current != null && current.data != value) {
current = current.next;
}
if (current != null) {
current.next = current.next.next;
}
}
```
5. **取数据元素** (getData): 返回当前指向的节点数据,如果是头部节点,可以直接返回;如果不是,则需要遍历查找。
```python
def get_data(self):
if self.head is None:
return None
return self.head.data
```
Java 版本:
```java
int getData() {
if (head == null) {
return -1; // Or throw an exception
}
return head.data;
}
```
阅读全文