新建一个链表,将输入的数据采用前插法或后插法存入链表中,并将输入的元素输出,并完成以下基本操作: (1).删除指定位置的元素; (2).向指定位置插入元素; (3).查找某元素在链表中的位置。
时间: 2024-10-23 10:11:04 浏览: 20
头插法、尾插法、链表长度test-c-master.zip
新建链表并采用前插法或后插法添加数据的过程通常涉及创建节点对象、维护头节点以及处理插入和删除操作。以下是基础操作的概述:
1. **前插法添加元素**:首先创建一个新的节点,存储输入数据,然后设置新节点的下一个指针指向当前链表的头部。如果链表为空,则新节点同时作为头节点。
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
def insert_front(data):
new_node = Node(data)
if not head:
head = new_node
else:
new_node.next = head
head = new_node
```
2. **后插法添加元素**:同样创建新节点,但在添加到链表末尾之前需要遍历整个链表找到最后一个节点。
```python
def insert_back(data):
if not head:
head = Node(data)
else:
current = head
while current.next:
current = current.next
current.next = Node(data)
```
3. **删除指定位置的元素**:通过遍历链表找到目标位置,将其前一个节点的next指针指向该节点的下一个,实现删除。
```python
def delete_at(position):
if position < 0 or position >= length():
return
if position == 0:
head = head.next
else:
current = head
for _ in range(position - 1):
current = current.next
current.next = current.next.next
```
4. **向指定位置插入元素**:类似删除操作,先找到插入位置,然后调整相邻节点的next指针。
```python
def insert_at(position, data):
if position < 0 or position > length():
return
new_node = Node(data)
if position == 0:
new_node.next = head
head = new_node
else:
current = head
for _ in range(position - 1):
current = current.next
new_node.next = current.next
current.next = new_node
```
5. **查找某元素在链表中的位置**:从头开始遍历链表,直到找到匹配的元素或遍历完为止。
```python
def find_position(element):
current = head
position = 0
while current and current.data != element:
current = current.next
position += 1
if current is not None:
return position
else:
return -1
```
阅读全文