Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2010, 18:31   #1
Nitriyc
Пользователь
 
Регистрация: 18.11.2009
Сообщений: 20
Восклицание Списки в С

Пред. Вот задание: Дан текстовый файл, компонентами которого являются целые числа. Не упорядочивая содержимое файла, удалить из него повторяющиеся элементы, оставив только первые вхождения.
Nitriyc вне форума Ответить с цитированием
Старый 31.05.2010, 00:55   #2
Nitriyc
Пользователь
 
Регистрация: 18.11.2009
Сообщений: 20
По умолчанию

Вот прога, но она не правильно удоляет:
Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <alloc.h>

typedef struct list {
int number;
struct list *next;
} LIST;

LIST *read_list(LIST *lst)
{
  LIST *p;
  FILE *f;
  f=fopen("1.txt","r");
  if (!feof(f))
  {
	lst=(LIST *)malloc(sizeof(LIST));
    p=lst;
    while (1)
    {
	  fscanf(f,"%d",&p->number);
      if (!feof(f))
      {
	p->next=(LIST *)malloc(sizeof(LIST));
	p=p->next;
	  } else break;
	}
	p->next=NULL;
  }
  else printf("Файл пустой\n");
  fclose(f);
  return lst;
}
LIST *del_element(LIST *lst)
{
 LIST *p1=lst,*p2=p1->next, *prev=lst, *p3=p1->next;
 int t=0;
while (p1)
{
 while (p3)
 {
   if(p3->number==p1->number) t++;
	 if (t==1)

	  {   t=0;
		  free(p1);
		  if(p1==lst)
		  {
		  lst=p2;
		  prev=lst;
		  }
		  else
		 {
		prev->next=p2;
		p1=prev;
		  }
	 }
   p3=p3->next;
 }
   prev=p1;
   p1=p1->next;
   p2=p2->next;
   t=0;
   p3=p1->next;
}
 return lst;
}

LIST *Output(LIST *lst)
{
LIST *p1=lst;
FILE *f=fopen("2.txt", "w");
int i;
	for (i=0; p1; i++)
	{
	fprintf (f, "%d ", p1->number);
	printf ("%d ", p1->number);
	p1=p1->next;
	}
}

void main()
{
  LIST *lst=NULL;
  printf ("\n");
  lst=read_list(lst);
  lst=del_element(lst);
  Output(lst);
  getch();
}
Кому не сложно помогите исправить. Заранее спасибо
Nitriyc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
(Си) Списки Dartchuwak Помощь студентам 2 12.01.2010 00:52
Списки [MI_nor] Общие вопросы C/C++ 8 27.04.2009 06:56
Списки С++ Vikylik Помощь студентам 0 08.04.2009 16:31
с++ списки Blizzz Общие вопросы C/C++ 3 04.12.2008 21:19