#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int val;
struct ListNode *next;
};
void insertNode(struct ListNode **head, int position, int val) {
struct ListNode *newNode = (struct ListNode *)malloc(sizeof(struct ListNode));
newNode->val = val;
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
return;
}
if (position == 0) {
newNode->next = *head;
*head = newNode;
return;
}
struct ListNode *prevNode = *head;
for (int i = 0; i < position - 1 && prevNode->next != NULL; i++) {
prevNode = prevNode->next;
}
if (prevNode->next == NULL) {
prevNode->next = newNode;
return;
}
newNode->next = prevNode->next;
prevNode->next = newNode;
}
int main() {
struct ListNode *head = NULL;
insertNode(&head, 0, 1);
insertNode(&head, 1, 3);
insertNode(&head, 1, 2);
insertNode(&head, 3, 4);
struct ListNode *p = head;
while (p != NULL) {
printf("%d ", p->val);
p = p->next;
}
printf("\n");
return 0;
}