编程语:C++ 难度:中等 单个测试集评测时长限制:3秒 完成函数sortInsert的编写,该函数将nd指向的一个Node结点按num从小到大的顺序插入到head指向的单向链表中,并返回新链表。 样例输入:2 6 4 13 7 9 5 12 样例输出:2 4 5 6 7 9 12 13 备注(762)
时间: 2023-12-29 16:02:36 浏览: 297
以下是完整的C++代码实现:
```c++
#include <iostream>
using namespace std;
struct Node {
int num;
Node* next;
};
Node* sortInsert(Node* head, Node* nd) {
if (head == nullptr) {
return nd;
}
if (nd->num < head->num) {
nd->next = head;
return nd;
}
Node* p = head;
while (p->next != nullptr && p->next->num < nd->num) {
p = p->next;
}
nd->next = p->next;
p->next = nd;
return head;
}
void printList(Node* head) {
while (head != nullptr) {
cout << head->num << " ";
head = head->next;
}
cout << endl;
}
int main() {
int num;
Node* head = nullptr;
while (cin >> num) {
Node* nd = new Node();
nd->num = num;
head = sortInsert(head, nd);
}
printList(head);
return 0;
}
```
该函数的实现过程比较简单。我们先判断链表是否为空,如果是,则直接将新结点插入到头部;否则,我们遍历链表找到新结点需要插入的位置,并插入到该位置。最后返回新的链表头节点即可。
在 `main` 函数中,我们读入输入数据,并调用 `sortInsert` 函数进行插入排序。最后输出排序后的链表即可。
阅读全文