質問: c言語で連結リストでキューを作る方法が分からず少し詰まってしまいました。
回答: 認識されてるようにエンキューではリストの末尾に追加しなければなりません。その簡単な方法は末尾を指すポインタを持つことです。もちろん毎回、先頭から末尾までサーチしてもできますが、それは効率がよくありません。そこで末尾を指すポインタ gTail を持つことにします。ついでに先頭を指す gFront もポインタにします。すると、こんな感じになります。参考まで struct Queue_cell *gFront = NULL; struct Queue_cell *gTail = NULL; void enqueue(int val) { struct Queue_cell *p = malloc(sizeof(struct Queue_cell)); p->val = val; p->next = 0; if(gFront == NULL) { // 空のとき先頭に入れる gFront = p; gTail = p; }else { // それ以外はgTailの後ろに入れる gTail->next = p; gTail = p; } } void dequeue() { if(gFront != NULL) { gFront = gFront->next; // 先頭の要素を取り出す } }