User-13020352 Ответов: 2

Где я ошибаюсь, удаляя дубликат в связанном ist?


Удаление повторяющегося целого числа, повторяющегося в связанном списке . Код не работает, можете ли вы назвать мне причину, по которой этот код не работает.

Что я уже пробовал:

#include<stdio.h>
#include<stdlib.h>
typedef struct nodetype 
{
	int info ;
	struct nodetype *next ;
}node;
void rem(node*);
int main()
{
	int a=1,item;
	node *head=NULL,*ptr,*lol=NULL;
	printf("enter the integers");
	while(a<=5)
	{   
	head=(node*)malloc(sizeof(node));
    scanf("%d",&head->info);
    if(lol != NULL)
    {
    	ptr->next=head;
    	ptr = head;
	}
    else
	{
	 lol=ptr=head;
	}	
    	   	
    a++;
	}
	ptr->next=NULL;
	ptr=lol;
	rem(ptr);
	return 0;	
}
void rem(node *head)
{
	int i;
	node *brown,*ptr,*blue,*red,*pink,*yellow;
	brown=yellow=ptr=pink=blue=red=head;
	while(head!=NULL)
	{
		i=head->info;
		head=head->next;
		red=head;
		while(red!=NULL)
		{
			brown=red;
			while(red->info!=i)
			{
				pink=red;
				red=red->next;
			}
			if(red->info==i)
			{	
				yellow=red;
				pink->next=red->next;
				free(yellow);
			}
			red=brown;
			red=red->next;
		}
		
	}
		while(ptr!=NULL)
	{
		printf("%d\n",ptr->info);
		ptr=ptr->next;
	}
}

2 Ответов

Рейтинг:
9

Patrice T

Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


User-13020352

Как отлаживать с помощью dev c++ ?

Patrice T

Я не знаю "Dev c++".
Но я думаю, что вы найдете что-то с "Google Dev c++"

User-13020352

Спасибо за Вашу поддержку .
Научился отлаживать .

Patrice T

Просто любопытно, что вы думаете об отладчике :)

Рейтинг:
18

OriginalGriff

Это ваша домашняя работа, и заставить ее работать-часть задачи! Если мы сделаем это за вас, вы не научитесь делать это позже, когда проекты будут намного сложнее.

Так что все будет зависеть от вас.
Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. По одному шагу в каждой строке, проверяя, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас-вам пора освоить новый (и очень, очень полезный) навык: отладку!


User-13020352

Я не знаю, как устранить ошибку сегментации в этом коде ?
это идет в отладке . пожалуйста, решите это для меня . Многие дуги будут очищены при использовании указателей .

OriginalGriff

Вы написали код, вы знаете, что, по вашему мнению, он должен делать.
Используйте отладчик и узнайте, где он делает то, чего вы не ожидаете. Это часть вашей домашней работы, и это навык, который гораздо легче освоить на такой маленькой программе, как эта, чем на многомиллионном бегемоте!

Попробуйте-посмотрите, что вы можете узнать.

User-13020352

да, я решил ее и тоже научился отлаживать . :)

OriginalGriff

Отлично! :большой палец вверх:
Это становится забавным, отладка-и чем больше вы это делаете, тем лучше у вас получается.

Имейте в виду, это также может привести к тому, что вы будете биться головой о стол в отчаянии... :смеяться: