Я делаю эту программу с одиночным соединением. Моя проблема в том, когда я показываю список, он ничего не отображает. Я просмотрел свой код и не нашел ничего плохого. Я могу сделать эту программу без проблем, когда переменные глобальны. Теперь я стараюсь, чтобы мои переменные были локальными, в основной функции.Объявление переменных в основной функции для односвязного списка в C
- Это из-за моих локальных переменных?
- Должен ли я возвращать переменные, которые я использовал в функциях?
Вот код:
typedef struct room
{
int roomNumber;
struct room *nextRoom;
}room;
room *create_room(int val)
{
room *temp;
temp=(room *)malloc(sizeof(room));
if(temp==NULL)
{
printf("create_room error");
return 0;
}
else
{
temp->roomNumber=val;
temp->nextRoom=NULL;
return temp;
}
}
void room_insert(room *r,room *last)
{
room *temp;
FILE *fp;
int m,f,i;
fp=fopen("room.txt","r");
if(fp==NULL)
{
printf("room_insert error");
}
else
{
fscanf(fp,"%d %d",&m,&f);
for(i=1;i<=m;i++)
{
temp=create_room(i);
if(r==last && r==NULL)
{
r=last=temp;
r->nextRoom=NULL;
last->nextRoom=NULL;
}
else
{
last->nextRoom=temp;
last=temp;
last->nextRoom=NULL;
}
}
}
fclose(fp);
}
void indisp(room *r)
{
room *temp;
if(r==NULL)
{
printf("no node");
}
else
{
/*
for(temp=r;temp!=NULL;temp=temp->nextRoom)
{
printf("%d\t",temp->roomNumber);
}*/
temp=r;
while(temp!=NULL)
{
printf("%d\t",temp->roomNumber);
temp=temp->nextRoom;
}
}
}
void main()
{
room *r=NULL,*last=NULL;
clrscr();
room_insert(r,last);
indisp(r);
getch();
}
list.txt и чтение файла прекрасно работает.
'Я просмотрел свой код и не нашел ничего плохого'. Если вы пройдете через него в отладчике, ваши шансы найти то, что неправильно значительно улучшены. –
Подробнее об отправке аргументов по ссылке, –
Как получить отладчик? –