编程实现单向链表的基本操作: 1.插入元素 2.删除元素 3.获取第i个结点的数据元素 4.判断元素是否存在-----前面4个已提供源码参考 5.获取某个元素的下一个元素;NextElem(L, cur_e, &next_e);
时间: 2023-08-31 22:31:51 浏览: 108
实现链表元素的定位
### 回答1:
next_e)
struct ListNode{
int val;
ListNode* next;
ListNode(int x): val(x), next(nullptr){}
};
//插入元素
ListNode* insertNode(ListNode* head, int val){
ListNode* node = new ListNode(val);
node->next = head;
return node;
}
//删除元素
ListNode* deleteNode(ListNode* head, int val){
if(!head) return nullptr;
if(head->val == val) return head->next;
ListNode* cur = head;
while(cur->next){
if(cur->next->val == val){
cur->next = cur->next->next;
return head;
}
cur = cur->next;
}
return head;
}
//获取第i个结点的数据元素
int getElem(ListNode* head, int i){
ListNode* cur = head;
while(cur && --i){
cur = cur->next;
}
if(!cur) return -1;
return cur->val;
}
//判断元素是否存在
bool isExist(ListNode* head, int val){
ListNode* cur = head;
while(cur){
if(cur->val == val) return true;
cur = cur->next;
}
return false;
}
//获取某个元素的下一个元素
bool nextElem(ListNode* head, int cur_e, int& next_e){
ListNode* cur = head;
while(cur){
if(cur->val == cur_e){
if(cur->next){
next_e = cur->next->val;
return true;
}
else{
return false;
}
}
cur = cur->next;
}
return false;
}
### 回答2:
编程实现单向链表的基本操作可以使用如下源码:
```python
class ListNode:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
# 插入元素
def insert(self, data):
if self.head is None:
self.head = ListNode(data)
else:
current = self.head
while current.next:
current = current.next
current.next = ListNode(data)
# 删除元素
def delete(self, data):
if self.head is None:
return
if self.head.data == data:
self.head = self.head.next
else:
current = self.head
previous = None
while current and current.data != data:
previous = current
current = current.next
if current:
previous.next = current.next
# 获取第i个结点的数据元素
def get_element(self, index):
current = self.head
count = 0
while current and count != index:
current = current.next
count += 1
if current:
return current.data
# 判断元素是否存在
def is_exists(self, data):
current = self.head
while current:
if current.data == data:
return True
current = current.next
return False
# 获取某个元素的下一个元素
def get_next_element(self, cur_e):
current = self.head
while current:
if current.data == cur_e:
return current.next.data if current.next else None
current = current.next
return None
# 测试样例
linked_list = LinkedList()
linked_list.insert(1)
linked_list.insert(2)
linked_list.insert(3)
print(linked_list.is_exists(2)) # 输出 True
print(linked_list.get_element(1)) # 输出 2
print(linked_list.get_next_element(2)) # 输出 3
linked_list.delete(2)
print(linked_list.is_exists(2)) # 输出 False
```
此源码实现了单向链表的基本操作。其中包括插入元素、删除元素、获取第i个结点的数据元素、判断元素是否存在以及获取某个元素的下一个元素。通过调用相应的方法,可以对单向链表进行增删改查的操作。
### 回答3:
下面是单向链表的基本操作的代码实现:
1. 插入元素:
```python
def insert_element(L, value, index):
if index < 0 or index > len(L):
print("插入位置错误")
return
new_node = Node(value)
if index == 0:
new_node.next = L.head
L.head = new_node
else:
pre = L.head
for i in range(index - 1):
pre = pre.next
new_node.next = pre.next
pre.next = new_node
```
2. 删除元素:
```python
def delete_element(L, value):
pre = L.head
cur = L.head.next
# 删除头结点
if L.head.data == value:
L.head = L.head.next
return
while cur is not None:
if cur.data == value:
pre.next = cur.next
return
pre = cur
cur = cur.next
print("要删除的元素不存在")
```
3. 获取第i个结点的数据元素:
```python
def get_element(L, index):
if index < 0 or index >= len(L):
print("索引错误")
return None
cur = L.head
for i in range(index):
cur = cur.next
return cur.data
```
4. 判断元素是否存在:
```python
def is_element_exist(L, value):
cur = L.head
while cur is not None:
if cur.data == value:
return True
cur = cur.next
return False
```
5. 获取某个元素的下一个元素:
```python
def get_next_element(L, value):
cur = L.head
while cur is not None:
if cur.data == value and cur.next is not None:
return cur.next.data
cur = cur.next
return "该元素不存在或没有下一个元素"
```
以上是基本操作的代码实现,可以根据需要进行调用。其中,单向链表的节点定义为:
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
```
另外,值得注意的是,以上代码中的L表示单向链表,其包括一个头结点head,可以在构建单向链表时通过L.head指定。
阅读全文