#include #include #include #include struct list { list(char _elem = 0, list *_next = NULL) : elem(_elem), next(_next) {} char elem; list *next; }; void print(list *l); void unique(list *l); char input(const char *path, list *l); int main() { setlocale(0, ""); list *S = new list(); input("symbols.txt", S); //unique(S); print(S); return 0 * _getch(); } char input(const char *path, list *l) { FILE *stream = NULL; fopen_s(&stream, path, "r"); if (stream) { char elem = 0; list *d = new list(); // Считываем все символы из файла. for (list *p = l; fscanf_s(stream, "%c", &elem, 1) != EOF && p; ) { bool isUniq = true; for (list *q = d; q && isUniq; q = q->next) if (elem == q->elem) isUniq = false; if (!isUniq) { for (list **z = &l; *z; z = &((*z)->next)) { if ((*z)->elem == elem) { list *t = (*z)->next; delete *z; *z = t; } } } else { p->elem = elem; p->next = new list(); p = p->next; list *ld = d; for ( ; ld->next; ld = ld->next); ld->elem = elem; ld->next = new list(); } } fclose(stream); return 0; } else { perror("Завершение работы программы"); return -1; } } void unique(list *l) { for (list *q = l; q && q->next; q = q->next) { int dup_c = 0; for (list *t = q->next; t->next; ) { if (t->next->elem == q->next->elem) { list *w = t->next->next; delete t->next; t->next = w; dup_c++; int a = 1; } else t = t->next; } if (dup_c) { list *w = q->next->next; delete q->next; q->next = w; int b = 2; } int c = 3; } } void print(list *l) { printf_s("Результат работы программы: \n"); for (list *p = l; p; p = p->next) printf_s("%c", p->elem); }