私は単方向リストの実装で忙しく、 と の 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 pos
がint
. null の代わりに 0 を使用する必要がありますか?