Я пытаюсь напечатать двустороннюю очередь (deque), которая также является константой. Моя структура deque проста:
struct node {
int item;
struct node *previous;
struct node *next;
};
struct deque {
struct node *start;
struct node *end;
};
Мое мнение таково:
void deque_print(const struct deque *deq) {
assert(deq);
if (deq->start->item == deq->end->item) {
printf("[%d]\n", deq->front->item);
}
else {
printf("{");
while (1) {
printf("%d", deq->start->item);
deq->start = deq->start->next; /// I know this is the problem
printf(" ");
}
printf("}\n");
}
}
Как отмечено в комментариях к коду, я знаю, какая строка вызывает проблему ( поскольку тип deq является постоянным). Я хотел бы знать, как улучшить это, чтобы это могло печатать. Пожалуйста, также не изменяйте заголовок / объявление функции.
Кроме того, функция печатает все элементы, спереди назад. Он окружен фигурными скобками, и каждый элемент имеет пробел между следующими. Итак, если элементы спереди назад - 1,2,3,4,5, то на выходе должно быть:
{1 2 3 4 5}
Кроме того, не беспокойтесь о пустоте декы, я знаю, как это сделать который. Мне любопытно, в деке есть хотя бы 1 элемент.
В ответ на первый комментарий я попытался:
else {
printf("{");
struct llnode *temp = deq->start;
while (1) {
printf("%d", temp->item); /// problem
temp = temp->next;
if (temp == NULL) break;
printf(" ");
}
printf("}\n");
}
, и он все еще не работал. Моя функция печати вызывает у меня проблемы