質問内容はタイトルと同じです。なぜ、代入ができないのかを教えてください。リストの追加位置はtopの末尾です。
c
1#include <stdio.h> 2#include <stdlib.h> 3 4typedef struct data_ { 5 char key; 6 struct data_ *next; 7}data; 8 9struct queue{ 10 data *top, *rear; 11}; 12 13void enqueue (struct queue *q, char key); 14 15 16 17int main(){ 18 19 struct queue q; 20 21 enqueue(&q, 'a'); 22 23 printf("%c\n",q.top->key); 24 printf("%c\n",q.rear->key); 25 26 return 0; 27} 28 29void enqueue (struct queue *q, char key){ 30 31 data *new = malloc(sizeof(data)); 32 if (new == NULL) { 33 printf("ERROR\n"); 34 exit(1); 35 } 36 new->key = key; 37 q->rear = new; 38 data* tail = q->top; 39 40 while (tail != NULL) { 41 42 tail=tail->next; 43 } 44 45 tail = new;/**代入ができていない**/ 46} 47
rearはキューの末尾を指してるんですよね?
ならばrearのうしろに繋げばいい。tailって必要ですか?
回答2件
あなたの回答
tips
プレビュー