#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);
}