ノードのインデックス番号(シリアル番号)によって、リンクされたリストから特定のノードを削除したい。したがって、関数でやろうとしたことは、最初にインデックス番号のユーザー入力を取得したことです。次に、2 つのノード タイプ ポインタtemp
とを使用しcurrent
ました。リストのトラバースを開始しcurrent
、ノードのインデックス番号がユーザー入力と一致すると、ノードを削除しようとしました。ここまでは正しいです。削除ロジックに問題があります。これが私が試したコードです:
void delete_node(struct node **start,int index_no)
{
int counter=0;
struct node *temp, *current;
temp=(struct node *)malloc(sizeof(struct node));
current=(struct node *)malloc(sizeof(struct node));
current=*start;
while(current->next!=NULL)
{
counter++;
if(counter==index_no)
{
temp= current->next;
free(current);
/*I guess some code is missing here. Help me finding the logic.*/
}
else
{
printf("\n The index number is invalid!!");
}
}
}
コメント部分には削除ロジックがありません。また、このコードはスペースと時間の効率が悪いと感じています。もしそうなら、もっとコンパクトにする方法を提案してください。