Я пытаюсь распечатать значения дважды связанного кругового списка, но моя функция printAll по какой-либо причине выводит содержимое первого узла ,Печать содержимого двунаправленного кругового списка в c выводит только первый узел
#include<stdlib.h>
#include<stdio.h>
struct clientsOn
{
int id;
char filename[20];
struct clientsOn* next;
struct clientsOn* prev;
};
struct clientsList
{
int count;
struct clientsOn* head;
};
void printAll(struct clientsList* list);
void add(struct clientsList *list,struct clientsOn *newC);
struct clientsList* createList();
struct clientsOn* createNode(char* profile);
main()
{
struct clientsList* people = malloc(sizeof(struct clientsList));
people = createList();
printf("Number of people currently on: %d\n",people->count);
struct clientsOn* pers1, *pers2, *pers3;
char boy[20],boy2[20],boy3[20];
printf("String: \n");
scanf("%s",boy);
printf("String: \n");
scanf("%s",boy2);
printf("String: \n");
scanf("%s",boy3);
pers1 = createNode(boy);
pers2 = createNode(boy2);
pers3 = createNode(boy3);
add(people,pers1);
add(people,pers2);
add(people,pers3);
printf("people count: %d", people->count);
printAll(people);
}
struct clientsList* createList()
{
struct clientsList* list = malloc(sizeof(struct clientsList));
if(list){
list->head = NULL;
list->count = 0;
}
return list;
}
struct clientsOn* createNode(char* profile)
{
struct clientsOn* clients = malloc(sizeof(struct clientsOn));
if(clients){
clients->next = clients;
clients->prev = clients;
strcpy(clients->filename,profile);
}
return clients;
}
void add(struct clientsList *list,struct clientsOn *newC)
{
if(newC){
if(list->head == NULL){
list->head = newC;
}else{
list->head->prev = newC;
newC->prev = list->head->prev;
newC->prev->next = newC;
newC->next = list->head;
}
list->count++;
}
}
void printAll(struct clientsList* list)
{
struct clientsOn* node = list->head;
if(node != NULL){
do{
printf("list content is: %s",node->filename);
node = node->next;
}while(node!=list->head);
}
}
Моя добавь функция добавляет узлы в самом конце списка, и когда я выходной отсчет список
printf("people count: %d", people->count);
он показывает количество элементов добавляется в список, однако при попытке печати
printAll(people);
не выходит за пределы первого узла. Кто-нибудь когда-либо испытывал что-то подобное?
«* он не выходит за пределы ... когда-либо испытывает что-либо подобное *« Да, любопытное, пока играешь с молодыми лошадьми ... ;-) – alk