Консультация № 189593
17.06.2016, 18:57
0.00 руб.
0 1 1
Здравствуйте! Помогите, пожалуйста, написать программу. Использовать только C без C++
Пусть L динамический однонаправленный список. Описать функцию, которая определяет, есть ли в списке L хотя бы один элемент, который равен следующему за ним элементу.
Заранее благодарю.

Обсуждение

давно
Посетитель
7438
7205
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
Игорь Витальевич, спасибо Вам огромное!
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа