试写出一个采用单链表存储的线性表A(A带表头结点 Head)的数据元素逆置的代码
时间: 2023-05-30 14:07:34 浏览: 85
```python
def reverse_list(head):
if not head or not head.next:
return head
cur = head.next
prev = None
while cur:
temp = cur.next
cur.next = prev
prev = cur
cur = temp
head.next = prev
return head
```
注:上述代码中,head是带表头结点的单链表的头指针。
相关问题
试写出一个采用单链表存储的线性表A(A带表头结点Head)的数据元素逆置的算法。
可以使用头插法实现单链表的逆置,具体算法如下:
1. 定义三个指针变量p、q、r,分别指向头结点、第一个结点和第二个结点。
2. 将p指向头结点,q指向第一个结点,r指向第二个结点。
3. 将q的next指针指向p,即将第一个结点插入到头结点之后。
4. 将p、q、r依次向后移动一个结点,即p指向q,q指向r,r指向r的next。
5. 重复步骤3和4,直到r指向空结点,此时单链表逆置完成。
下面是具体的代码实现:
void reverseList(ListNode* head) {
if (head == NULL || head->next == NULL) {
return;
}
ListNode* p = head;
ListNode* q = head->next;
ListNode* r = q->next;
p->next = NULL;
while (r != NULL) {
q->next = p;
p = q;
q = r;
r = r->next;
}
q->next = p;
head->next = q;
}
试写出一个采用单链表存储的线性表A(A带表头结点 Head)的数据元素逆置的算法。
可以使用三个指针,分别指向当前节点、前一个节点和后一个节点,依次遍历链表并将当前节点的指针指向前一个节点,直到遍历完整个链表。具体实现如下:
void ReverseList(ListNode* Head) {
if (Head == NULL || Head->next == NULL) {
return;
}
ListNode* pre = NULL;
ListNode* cur = Head->next;
ListNode* next = cur->next;
while (next != NULL) {
cur->next = pre;
pre = cur;
cur = next;
next = next->next;
}
cur->next = pre;
Head->next = cur;
}
阅读全文