Все числа из заданного файла записать в линейный список - C (СИ)
Формулировка задачи:
Всем добрый день! Имеется текстовый файл с целыми числами. Требуется все числа из данного файла записать в линейный список. Но вот как это лучше осуществить? Как именно выбрать числа?
Решение задачи: «Все числа из заданного файла записать в линейный список»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <ctype.h> #include <conio.h> #include <math.h> typedef struct ELEMENT { int data; struct ELEMENT *next; }ELEMENT; void CreateHead(ELEMENT **head, ELEMENT **last) { *head=(ELEMENT *)malloc(sizeof(ELEMENT)); (*head)->next=NULL; *last=*head; } void Print(ELEMENT *head) { ELEMENT *q; q=head->next; while (q!=NULL) { printf ("%d ",q->data); q=q->next; } printf("\n"); } void AddElement(ELEMENT **last, int x) { ELEMENT *q; q=(ELEMENT *)malloc(sizeof(ELEMENT)); q->data=x; q->next=NULL; (*last)->next=q; *last=q; } /* ÏðîâåðêГ*, ÿâëÿåòñÿ ëè ÷èñëî ïîëîæèòåëüГ*ûì */ int Q (int a) { return (a>0); } /* ÏðîâåðêГ*, Г*Г*Г·ГЁГ*Г*ГҐГІГ±Гї ëè ÷èñëî Г± 1 */ int T (int a) { int b=abs(a); while(b>9) b/=10; return (b==1); } void DeleteElement(ELEMENT *head, ELEMENT **last,int x) { ELEMENT *q, *t; q=head; while (q->next!=NULL) { if (T(q->next->data)) { t=q->next; q->next=q->next->next; free (t); } else q=q->next; } *last=q; } void Count(ELEMENT *head, ELEMENT **last,int x) { ELEMENT *q, *t; q=head; int count=0; while (q->next!=NULL) { if (Q(q->next->data)) { count++; } else q=q->next; } *last=q; } int CreateFile(int a,char *fileName) { FILE *f; if ((f=fopen(fileName,"r"))==NULL) return 1; ELEMENT *head, *last; CreateHead(&head,&last); fscanf(f,"%d",a); while (a!=0) { AddElement(&last,a); fscanf(f,"%d",a); } return a; } int main() { char *fileName="e:\\inf\\9.txt"; ELEMENT *head, *last; int a,count; CreateFile (a,fileName); Print(head); DeleteElement(head,&last,a); Print(head); count=Count(head,&last,count); printf("Kol_vo= ",count); return 0; }
Объяснение кода листинга программы
- В начале кода определяются необходимые функции и переменные
- Затем определяется структура данных ELEMENT для работы с линейным списком
- Создаются функции для работы со списком: CreateHead, Print, AddElement, DeleteElement, Count
- Определяются функции Q и T для проверки чисел на положительность и одиночность цифры
- В функции main создается файл для чтения чисел, создается пустой список, числа из файла добавляются в список
- Затем список выводится на экран, после чего происходит удаление чисел из списка и подсчет оставшихся элементов
- В конце программы выводится количество оставшихся элементов списка
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д