0

私は単方向リストの実装で忙しく、 と の 2 つの機能がinsert_backありinsert_afterます。

それらのリストは次のとおりです。

void insert_back(int data)
{
    node *temp1;

    temp1 = (node*)malloc(sizeof(node));
    temp1 = head;

    while (temp1->next != NULL) {
        temp1 = temp1->next;
    }

    node *temp;

    temp = (node*)malloc(sizeof(node));
    temp->data = data;
    temp->next = NULL;
    temp1->next = temp; 
}

void insert_after(int pos, int data)
{
    node *temp1;

    temp1 = (node*)malloc(sizeof(node));
    temp1 = head;

    for (int i = 1; i < pos; i++) {
        temp1 = temp1->next;

        if (temp1 == NULL) {
            return;
        }
    }

    node *temp;

    temp = (node*)malloc(sizeof(node));
    temp->data = data;
    temp->next = temp1->next;
    temp1->next = temp; 
}

ご覧のとおり、それらはほとんど同じであり、挿入バックについてはinsert_after(null, 10). if 条件を追加してループの 1 つを選択することで解決できますが、それは私の目的ではありません。

シリアル番号とnullに1つwhileまたはループを一緒に使用することは何とか可能ですか?for

また、paramint posint. null の代わりに 0 を使用する必要がありますか?

4

2 に答える 2