30 lines
629 B
C++
30 lines
629 B
C++
#include "list.h"
|
|
|
|
List *insert(List *head, int data) {
|
|
if (head == nullptr) {
|
|
List *node = new List();
|
|
node->data = data;
|
|
node->next = nullptr;
|
|
return node;
|
|
}
|
|
|
|
if (head->data > data) {
|
|
List *newHead = new List();
|
|
newHead->data = data;
|
|
newHead->next = head;
|
|
head = newHead;
|
|
} else {
|
|
List *tmp = head;
|
|
while (tmp->next != nullptr && tmp->data < data) {
|
|
tmp = head->next;
|
|
}
|
|
List *tail = new List();
|
|
tail->data = data;
|
|
// Set the pointer to the next, we don't know if its at the end or not
|
|
tail->next = tmp->next;
|
|
tmp->next = tail;
|
|
}
|
|
|
|
return head;
|
|
}
|