c++成为有序单链表的操作
时间: 2024-06-12 11:10:49 浏览: 63
c++实现链表的操作
将一个 C++ 数组转换为有序单链表的操作可以分为以下几个步骤:
1. 定义链表节点结构体,包括节点值和指向下一个节点的指针。
2. 定义链表头指针,并初始化为空。
3. 遍历数组,依次将数组元素插入到链表中。
4. 在插入元素时,需要找到插入位置,使得链表仍然保持有序。
5. 最后返回链表头指针即可。
下面是一个示例代码:
```c++
#include <iostream>
using namespace std;
// 定义链表节点结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
// 将数组转换为有序单链表
ListNode* arrayToList(int arr[], int n) {
// 定义链表头指针
ListNode* head = NULL;
// 遍历数组,依次将数组元素插入到链表中
for (int i = 0; i < n; i++) {
// 创建新节点
ListNode* node = new ListNode(arr[i]);
// 找到插入位置
ListNode* prev = NULL;
ListNode* curr = head;
while (curr != NULL && curr->val < arr[i]) {
prev = curr;
curr = curr->next;
}
// 插入新节点
if (prev == NULL) {
node->next = head;
head = node;
} else {
node->next = prev->next;
prev->next = node;
}
}
// 返回链表头指针
return head;
}
int main() {
int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
int n = sizeof(arr) / sizeof(arr[0]);
ListNode* head = arrayToList(arr, n);
// 遍历链表,输出节点值
ListNode* curr = head;
while (curr != NULL) {
cout << curr->val << " ";
curr = curr->next; }
cout << endl;
return 0;
}
```
阅读全文