获得单链表中第i个结点的值算法 输入:无 前置条件:i不空,i合法 动作:找到第i个结点。 输出:返回第i个结点的元素值。 后置条件:无
时间: 2024-09-19 19:01:00 浏览: 37
获取单链表中第i个节点的值通常涉及遍历链表。以下是Python的一个简单示例:
```python
class Node:
def __init__(self, value, next=None):
self.value = value
self.next = next
def get_node_value(head, i):
if i <= 0 or not head: # 验证i是否合法且链表非空
return None
current = head # 初始化当前节点为头节点
for _ in range(i - 1): # 先向前移动i-1步
current = current.next
if current is not None: # 如果到了有效位置,返回节点值
return current.value
else:
return None # 如果越界,返回None
# 使用示例
head = Node(1, Node(2, Node(3, Node(4))))
print(get_node_value(head, 3)) # 输出:3
```
这个函数通过循环访问每个节点,直到达到指定索引`i`,然后返回该节点的值。如果索引无效(即i小于1),则返回`None`。
相关问题
单链表查找第i个结点
好的,针对您的问题,下面是单链表查找第i个结点的代码示例(假设链表的头结点为head):
```python
def find_node(head, i):
"""
查找单链表中第i个结点
"""
if i < 1:
return None
node = head.next
j = 1
while node and j < i:
node = node.next
j += 1
if j == i and node:
return node
else:
return None
```
实现原理是从链表的头结点开始遍历,依次访问每个结点,直到找到第i个结点或者遍历到链表的末尾。
需要注意的是,链表的下标从1开始,而不是从0开始。另外,如果i小于1或者大于链表的长度,都应该返回None。
删除单链表的第i个结点
要删除单链表的第i个结点,需要先找到该结点的前一个结点,然后将其指向下一个结点即可。
具体步骤如下:
1. 如果要删除的是第一个结点,直接将头结点指向第二个结点即可。
2. 如果要删除的不是第一个结点,需要先遍历到它的前一个结点。
2.1 从头结点开始遍历,一直遍历到第i-1个结点。
2.2 将第i-1个结点的next指针指向第i+1个结点。
3. 释放第i个结点的内存空间,完成删除操作。
代码实现如下:
```
void deleteNode(ListNode* head, int i) {
ListNode* p = head;
if (i == 1) {
head = head->next;
delete p;
return;
}
for (int j = 1; j < i - 1; j++) {
p = p->next;
}
ListNode* q = p->next;
p->next = q->next;
delete q;
}
```
其中,ListNode是单链表结点的定义,包含一个val成员和一个next指针指向下一个结点。函数的参数是头结点和要删除的结点的位置i。
阅读全文
相关推荐











