Создать двусвязный список из файла - C (СИ)
Формулировка задачи:
Здравствуйте!
Мне нужно создать двусвязный список из файла на Си(не C++).
В файле содержатся 2 столбца с числами: первый - double x;
второй - unsigned y;
Мне нужно организовать двусвязный список, состоящий из таких структур:
Struct A
{double x;
unsigned y;
}
Так как список двусвязный, я добавил 2 указателя - на предыдущий элемент и на следующий элемент,
затем начинаю считывание из файла. Что делать дальше?
Нужно еще какие-то указатели вводить, вроде?
#include <stdio.h> #include <stdlib.h> struct A {double x; unsigned y; struct A *prev; //Previous struct A *next;}; //Next void main() {A el; FILE *f; f=fopen("D:\\myf.txt","rt"); while (!(feof(f)) {fscanf(f,"%lf %d", &el.x, &el.y);
Объясните, плиз, как это все работает.
Решение задачи: «Создать двусвязный список из файла»
textual
Листинг программы
void Postroenie (node **nsp, node **ksp) // Построение двунаправленного списка с заглавным звеном: // *nsp - указатель на начало списка, // *ksp - указатель на конец списка. { node *rsp; int el; *nsp = new(node); rsp = *nsp; (**nsp).pred = (**nsp).sled = NULL; cout<<"Вводите последовательность:\n"; cin>>el; while (el!=0) { (*rsp).sled = new(node); (*((*rsp).sled)).pred = rsp; rsp = (*rsp).sled; (*rsp).sled = NULL; (*rsp).elem = el; cin>>el; } *ksp = rsp; }
Объяснение кода листинга программы
- Создается функция с именем Postroenie, которая принимает два указателя: nsp и ksp.
- Первый указатель nsp указывает на начало списка, а второй указатель ksp указывает на конец списка.
- Внутри функции создается новый узел и присваивается указателю rsp.
- Указатель rsp указывает на начало списка, поэтому (rsp).pred и (rsp).sled инициализируются как NULL.
- Затем пользователю предлагается ввести последовательность элементов.
- Переменная el инициализируется вводом пользователя.
- В цикле while происходит добавление каждого элемента в список.
- Для каждого элемента создается новый узел, и указатель rsp указывает на этот узел.
- Поле pred нового узла инициализируется как NULL, а поле sled указывает на предыдущий узел (rsp).
- Затем указатель rsp перемещается к следующему узлу, и поле sled этого узла инициализируется как NULL.
- Поле elem узла инициализируется введенным пользователем значением.
- После окончания цикла, указатель ksp инициализируется как rsp.
- Функция завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д