18.06.2016, 13:39
общий
это ответ
Здравствуйте, AlexGor!
Держите программу. Она очень проста, поэтому комментарии не писал.
[code h=200]
/*
Пусть L динамический однонаправленный список.
Описать функцию, которая определяет,
есть ли в списке L хотя бы один элемент,
который равен следующему за ним элементу.
*/
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
//структура динамического списка
struct LIST
{
int value; // значение элемента списка
LIST *next;
};
LIST *head = NULL;
//функция формирования списка добавлением в конец списка
void make(int a)
{
LIST *ptr, *x;
ptr = (LIST*)malloc(sizeof(LIST));
ptr->value = a;
ptr->next = NULL;
if (!head)
head = ptr;
else
{
for(x=head; x->next; x=x->next);
x->next = ptr;
}
}
void erase(void)
{
LIST *x;
while (head)
{
x = head->next;
free(head);
head = x;
}
}
//функция вывода на экран элементов списка
void print(void)
{
LIST *ptr = head;
while (ptr)
{
printf("%d ", ptr->value);
ptr = ptr->next;
}
printf("\n");
}
bool search(void)
{
LIST *ptr;
if (head != NULL)
{
for(ptr=head; ptr->next; ptr=ptr->next)
if (ptr->value == ptr->next->value)
return true;
}
return false;
}
int main()
{
int n, i, b;
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
printf("Введите количество элементов списка: ");
scanf("%d", &n);
printf("Введите элементы списка:\n");
for (i = 0; i<n; i++)
{
scanf("%d", &b);
make(b);
}
printf("Введенный список: ");
print();
if (search())
printf("Найден хотя бы один элемент, равный следующему\n");
else
printf("Не найдено ни одного элемента, равного следующему!\n");
erase();
system("pause");
return(0);
}[/code]
5
Игорь Витальевич, спасибо Вам огромное!
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен