使用C++1.以单链表作为存储结构,实现线性表 的就地逆置。2.创建一个非递减序(有重复值) 的单链表,实现删陈值相同的务余结点
时间: 2024-11-17 16:28:23 浏览: 34
单链表就地逆置的方法
1. 在C++中,我们可以使用单链表作为存储结构来实现线性表的就地逆置。就地逆置意味着不需要额外的空间,只需要通过修改原链表节点的指针指向即可完成逆转。以下是基本步骤:
```cpp
// 定义链表节点
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
// 就地逆置链表
ListNode* reverseList(ListNode* head) {
if (head == nullptr || head->next == nullptr) {
return head;
}
ListNode* prev = nullptr, *curr = head, *nextTemp = nullptr;
while (curr != nullptr) {
nextTemp = curr->next; // 记录当前节点的下一个节点
curr->next = prev; // 转换指针方向
prev = curr; // 移动prev到curr的位置
curr = nextTemp; // 移动curr到下一个节点
}
return prev; // 返回新头节点
}
```
阅读全文