C Вставить элемент в начале связанного списка

Я написал программу на C, которая предназначена для вставки структур в порядке возрастания в связанный список.

Проблема в том, что не вставляются мои два самых низких значения (1 и 2). Это связано с тем, что в настоящее время у меня нет работающего обработчика, чтобы проверить, больше ли первое значение в связанном списке, чем заданное.

,

Вот моя функция:

struct PCB
{
    struct PCB *Next_PCB ;
    int PID ;
};

void insert_ordered (struct PCB *Head, struct PCB *Add)
{
    tmp = Head;
    if (Head->PID == 0) {
        Head->PID = Add->PID;
    } else {
        if (Head->Next_PCB == NULL) {
            Head->Next_PCB = Add;
        } else {
            int count = 0;
            while (Head != NULL) {
                if (Add->PID > Head->PID) {
                    if (Head->Next_PCB != NULL) {
                        Head = Head->Next_PCB;
                        count++;
                    } else {
                        Head->Next_PCB = Add;
                        break;
                    }
                } else if (Add->PID == Head->PID) {
                    Add->Next_PCB = Head->Next_PCB;
                    Head->Next_PCB = Add;
                    break;
                } else if (Add->PID < Head->PID) {
                    if (Add->PID == 1 || Add->PID == 2) {
                        printf("found 1 or 2");
                        printf("count: %d", count);
                    }
                    int ct = 0;
                    while (tmp != NULL) {
                        if (count == 0) {
                            printf("made it, %d", ct);
                            Add->Next_PCB = tmp;
                            break;
                        } else if (ct == (count - 1)) {
                            Add->Next_PCB = Head;
                            tmp->Next_PCB = Add;
                            break;
                        }
                        tmp = tmp->Next_PCB;
                        ct++;
                    }
                    break;
                }
            }
        }
    }
    printf("pid : %d\n", Add->PID);
}

Вот мой вывод после распечатки списка:

pid : 6
pid : 17
pid : 15
pid : 13
pid : 15
pid : 6
pid : 12
pid : 9
found 1 or 2count: 0made it, 0pid : 1
found 1 or 2count: 0made it, 0pid : 2
pid : 7
pid : 10
pid : 19

-------------------
PID: 6
PID: 6
PID: 7
PID: 9
PID: 10
PID: 12
PID: 13
PID: 15
PID: 15
PID: 17
PID: 19

Выход ДОЛЖЕН иметь 1 и 2 перед двумя шестерками. Кто-нибудь может мне помочь? Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос