写出一个采用单链表存储的线性表A的数据元素逆置的算法
时间: 2023-04-10 17:05:07 浏览: 54
可以使用三个指针分别指向当前节点、前一个节点和后一个节点,依次遍历链表并将当前节点的指针指向前一个节点,直到遍历到链表末尾。具体实现代码如下:
void reverseList(ListNode* head) {
ListNode* prev = nullptr;
ListNode* curr = head;
ListNode* next = nullptr;
while (curr != nullptr) {
next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
head = prev;
}
相关问题
试写出一个采用单链表存储的线性表的数据元素逆置的算法
可以采用遍历链表的方式,依次将每个结点的指针指向其前驱结点,从而实现链表的逆置。具体实现如下:
1. 定义一个指向链表头结点的指针p,并将其初始化为头结点的下一个结点p->next;
2. 定义3个指针pre、cur、nex,其中pre指向NULL,cur指向p,nex指向cur的下一个结点;
3. 依次遍历链表的每个结点,将cur的指针指向pre,然后pre、cur、nex向后滑动一个结点,直到nex指向NULL为止;
4. 将p指向链表的最后一个结点。
逆置代码如下:
void reverse(LinkList &L) {
if(!L || !L->next) {
return;
}
LinkList p = L->next, pre = NULL, cur = p, nex = p->next;
while(nex) {
cur->next = pre;
pre = cur;
cur = nex;
nex = nex->next;
}
cur->next = pre;
L->next = cur;
}
注意:此代码仅适用于采用头结点的单链表存储结构,如果未采用头结点,需对代码进行相应修改。
试写出一个采用单链表存储的带表头结点head的线性表A的数据元素逆置的算法
下面是采用单链表存储的带表头结点head的线性表A的数据元素逆置的算法:
```
void ReverseList(LinkList &L) {
// 首先将头结点指针赋值为 NULL,同时用 p 指针指向头结点
LNode *p = L->next;
L->next = NULL;
// 循环遍历链表,将每个结点的 next 指针指向其前一个结点
while (p != NULL) {
LNode *tmp = p->next;
p->next = L->next;
L->next = p;
p = tmp;
}
}
```
这个算法使用了一个循环遍历链表的方法,将每个结点的 next 指针指向其前一个结点,从而实现链表的逆置。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)