ListNode* C_delete_last(ListNode* head) {

    ListNode* p = head;

    ListNode* q = (ListNode*)malloc(sizeof(ListNode));

    

    if (head == NULL) {

        return NULL;

    }


    while (p->link != head) { 

        q = p; 

        p = p->link;

    }

    

    q->link = head;

    free(p);


    return head;

}


돌리니까 마지막 노드가 아니라 마지막 앞 노드를 지워버리는데 뭐가 문제인지를 모르겠어;