Как вывести мой список повторно?
#include <stdio.h>
#include <stdlib.h>
typedef struct t_list{
int hour;
int minute;
struct t_list *next;
}t_list;
t_list *create_node(int set_hour, int set_minute){
t_list *node=(t_list *)malloc(sizeof(t_list));
node->hour=set_hour;
node->minute=set_minute;
node->next=NULL;
return node;
}
void push_front(t_list **list, int set_hour,int set_minute){
t_list *new_element=create_node(set_hour, set_minute);
new_element -> next = *list;
*list=new_element;
t_list* head = create_node(1, 2);
}
int main() {
t_list *list = create_node(1,3);
push_front(&list, 3, 11);
push_front(&list, 31, 13);
push_front(&list, 32, 11);
push_front(&list, 3, 11);
while (list!=NULL){
printf("hour = %d, minute=%d\n", list->hour, list->minute);
list=list->next;
}
while (list!=NULL){
printf("hour = %d, minute=%d\n", list->hour, list->minute);
list=list->next;
}
return 0;
}
Когда я пытаюсь вывести второй раз список, он не выводится, так как я уже в конце списка, как мне вернутся в начало моего односвязного списка?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Сохранять указатель на начало списка неизменным, использовать и менять его копию... :)
push_front(&list, 3, 11);
push_front(&list, 31, 13);
push_front(&list, 32, 11);
push_front(&list, 3, 11);
for(t_list*t = list; t; t = t->next) printf("hour = %d, minute=%d\n",t->hour, t->minute);
for(t_list*t = list; t; t = t->next) printf("hour = %d, minute=%d\n",t->hour, t->minute);
return 0;
Для тех, кто в танке:
t_list*t = list;
while(t) {
printf("hour = %d, minute=%d\n",t->hour, t->minute);
t = t->next;
}
t = list;
while(t) {
printf("hour = %d, minute=%d\n",t->hour, t->minute);
t = t->next;
}