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;
}

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