Programming/C C++

[DS] Insert a node at a specific position in a linked list

728x90

link

/*
 * For your reference:
 *
 * SinglyLinkedListNode {
 *     int data;
 *     SinglyLinkedListNode* next;
 * };
 *
 */
SinglyLinkedListNode* insertNodeAtPosition(SinglyLinkedListNode* head, int data, int position) {
    SinglyLinkedListNode *node = malloc(sizeof(SinglyLinkedListNode));
    node->data = data;
    node->next=NULL;
    SinglyLinkedListNode *tmp = head;
    for(int i=0;i<position-1;i++){
        tmp = tmp->next;
    }
    node->next = tmp->next;
    tmp->next=node;
    return head;
}

position의 위치에 data를 삽입해야하는 것이다. data라는 값을 노드의 data로 가지는 SinglyLinkedListNode 포인터 타입의 node를 생성해 저장한다. position의 위치에 원하는 값을 삽입하기 위해서는 총 position 만큼 head에서 움직여야 한다. 따라서, for문의 조건에 주의하여 작성해야한다.

SMALL

'Programming > C C++' 카테고리의 다른 글

[DS] Delete a Node  (0) 2020.09.20
Migratory Birds  (0) 2020.09.20
Divisible Sum Pairs  (0) 2020.09.13
[DS] Insert a node at the head of a linked list  (0) 2020.08.30
Birthday Chocolate  (0) 2020.08.30