オペレーティング システムのプロセス スケジューラをシミュレートするコンピューター サイエンス プロジェクトを行っています。複数の片方向リストがあり、それらの間でノードを移動する必要があります。これを達成するための一般的な関数を作成しようとしていますが、ポインターを使用する私の弱点が妨げになっていると思います。
目的の機能を実装するにはどうすればよいですか? これまでのところ、次のものがあります。
typedef struct process_list_struct ProcessList;
struct process_list_struct
{
Process proc;
ProcessList* next;
};
void change_lists(ProcessList* node, ProcessList* newlist)
{
ProcessList* temp = NULL;
debug_printf("change_lists reached\n");
temp = node;
if(!node)
{
debug_printf("Error: change_lists failed!\n");
return;
}
node = node->next;
temp->next = newlist;
newlist = temp;
return;
}
結果は奇妙です...移動したいノードのみを含む最初のリストになり、他のすべてが欠落しています(私が望んでいたものとはほとんど逆の効果です)、newlist(空で始まるとテストされた)は空のままです。
私は単一のリストでノードスワップの実装を調べ、代わりに二重ポインターを使用する人を見てきましたが、それは本当に私を混乱させます. この場合、誰かがそれらを適用する方法を教えてもらえますか? 私はそれらを使用してみましたが、構造体のポインター要素を参照することと組み合わせると、非常に混乱しました。
大変助かりました!