Сишники, помогите с очередью!!!
Помогите исправить код (((
Создать список из целых чисел. Заменить каждую последовательность повторяющихся элементов на один элемент.
#include
#include
#include
struct tqueue
{
int inf;
tqueue *next;
};
tqueue *head,*tail; //указатели на первый и последний элементы очереди
//-----------------инициализация очереди
void init_queue(tqueue *&h, tqueue *&t)
{h=t=NULL;}
//-----------------добавление элемента в очередь
void insert(tqueue *&h,tqueue *&t, int item)
{
tqueue *r=new tqueue;
r->inf=item;
r->next=NULL;
if (!h&&!t)
h=t=r;
else
{t->next=r;
t=r;}
}
//-------------выборка элемента из очереди
int take(tqueue *&h, tqueue *&t)
{
tqueue *r=h;
int i=r->inf;
h=r->next;
if (!h)
t=NULL;
delete r;
return i;
}
int main(void)
{
FILE *h=fopen("input1.txt","r");
FILE *g=fopen("output1.txt","w");
int i,posl,j,count=0;
init_queue(head,tail);//инициализируем очередь
while (!feof(h)) //пока не достигнут конец файла h
{
fscanf(h,"%d",&j); //читаем целое число из файла в переменную i
j=posl=take(head,tail);// запоминаем значение вершины стека в две переменные и удаляем
insert(head,tail,j);//записываем в очередь
j=take(head,tail);
if(j!=posl)
{
insert(head,tail,j);
posl=j;
}
}
g=fopen("output.txt","w");
while (!feof(h))
{
j=take(head,tail);
printf("%d ",j);
fprintf(g,"%d ",j);
}
printf("\n");
system("pause");
return 0;
}