Заполнение односвязного списка из файла - C (СИ)
Формулировка задачи:
Добрый день! Подскажите как заполнить содносвязный список из файла. Не совсем понимаю сам принцип действия. По мере считывания каждого символа в файле пытаюсь создать узел списка,копируя в список данные символы(ругается по поводу strcpy), затем пытаюсь присоединить заполненный узел к списку. Подскажите, пожалуйстаб правильный алгоритм.
Файл содержит следующее:
a 1
b 2
c 3
Далее собственно код:
#include
#include
#include
struct node
{
char name[20];
int age;
struct node* NEXT;
};
FILE* file1;
void push(struct node** top, char name, int age);
void displayList(struct node* top);
void main()
{
struct node* newNode;
struct node* top = NULL;
char name[20];
int age;
int numInputs;
file1 = fopen("test.txt", "r");
if (file1 == NULL)
{
printf("The file could not be opened\n");
}
else
{
printf("Reading the contents of Sample.txt\n");
while (!feof(file1))
{
numInputs = fscanf(file1, "%s %d", name, &age);
if (numInputs > 0)
{
printf("%s %d\n", name, age);
}
push(&top, name, age);
}
fclose(file1);
}
displayList(top);
getch();
}
void push(struct node** top, char name, int age)
{
if (top == NULL)
{
struct node* newNode;
newNode = (struct node*)malloc(sizeof(struct node));
strcpy(newNode->name, name);
newNode->age = age;
newNode->NEXT = *top;
*top = newNode;
}
else
{
struct node* curr;
struct node* newNode;
newNode = (struct node*)malloc(sizeof(struct node));
strcpy(newNode->name, name);
newNode->age = age;
curr = top;
while (curr->NEXT != NULL)
{
curr = curr->NEXT;
}
curr->NEXT = newNode;
newNode->NEXT = NULL;
}
}
void displayList(struct node* top)
{
struct node* curr;
curr = top;
while (curr != NULL)
{
printf("The name is %s age is %d\n", curr->name, curr->age);
curr = curr->NEXT;
}
}
Решение задачи: «Заполнение односвязного списка из файла»
textual
Листинг программы
void push(struct node** top, char* name, int age)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д