逆序数据建立链表
时间: 2023-06-28 11:14:02 浏览: 168
好的,我可以帮你解答这个问题。
逆序数据建立链表的基本思路是从后往前遍历数据,每次新建一个节点,并将其插入到链表的头部,最终得到的链表即为逆序链表。
具体实现步骤如下:
1. 定义节点结构体,包含数据域和指针域。
2. 定义链表头节点指针,初始化为空。
3. 从后往前遍历数据,每次新建一个节点并赋值,然后将其插入到链表的头部。
4. 循环结束后,链表头节点指针指向新链表的头节点。
下面是一个示例代码:
```c++
#include <iostream>
using namespace std;
// 定义节点结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x): val(x), next(NULL) {}
};
// 逆序建立链表
ListNode* reverseList(int arr[], int n) {
ListNode* head = NULL;
for(int i = n - 1; i >= 0; i--) {
ListNode* node = new ListNode(arr[i]);
node->next = head;
head = node;
}
return head;
}
// 输出链表
void printList(ListNode* head) {
while(head) {
cout << head->val << " ";
head = head->next;
}
cout << endl;
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(int);
ListNode* head = reverseList(arr, n);
printList(head);
return 0;
}
```
在上面的示例代码中,我们定义了一个逆序建立链表的函数 `reverseList`,它接收一个数组和数组长度作为参数,返回新链表的头节点指针。我们还定义了一个输出链表的函数 `printList` 来验证建立的链表是否正确。最后在主函数中调用这两个函数即可。
阅读全文