完成函数sortInsert的编写,该函数将nd指向的一个Node结点按num从小到大的顺序插入到head指向的单向链表中,并返回新链表。 样例输入:2 6 4 13 7 9 5 12 样例输出:2 4 5 6 7 9 12 13
时间: 2024-02-06 19:10:43 浏览: 12
以下是一种可能的实现方式:
```c++
struct Node {
int num;
Node* next;
Node(int n) : num(n), next(nullptr) {}
};
Node* sortInsert(Node* head, Node* nd) {
if (!head) {
return nd;
}
if (nd->num < head->num) {
nd->next = head;
return nd;
}
Node* curr = head;
while (curr->next && curr->next->num < nd->num) {
curr = curr->next;
}
nd->next = curr->next;
curr->next = nd;
return head;
}
int main() {
Node* head = nullptr;
// 读入链表
int n;
while (cin >> n) {
Node* nd = new Node(n);
head = sortInsert(head, nd);
}
// 输出链表
Node* curr = head;
while (curr) {
cout << curr->num << " ";
curr = curr->next;
}
return 0;
}
```
该函数首先处理特殊情况:如果链表为空,则直接返回新结点。否则,如果新结点的值比头结点的值小,则将新结点插入到头部并返回。如果新结点的值比头结点的值大,则从头结点开始遍历链表,找到第一个值比新结点大的结点,并将新结点插入到该结点之前。
最后,根据传入的链表头结点和新结点,返回新链表的头结点。