0 / 0 / 0
Регистрация: 15.12.2022
Сообщений: 17
1

Функция: определить, являются ли соседними элементы X и Y списка L (для списка задействовать Stack)

07.01.2023, 18:11. Показов 465. Ответов 2

Author24 — интернет-сервис помощи студентам
Составить программу которая с помощью функции и определить, является ли соседними элементы X и Y
списка L.
Для списка задействовать STACK
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2023, 18:11
Ответы с готовыми решениями:

Функция, которая проверяет, являются ли все элементы списка положительными числами
Помогите понять, в чем ошибка. Нужно-ли третье условие? Если в списке числа (положительные) то...

Определить функцию, которая проверяет, все ли элементы списка являются числами
Определить функцию, которая проверяет, все ли элементы списка являются числами.

Предикат (р х у s) - истинный тогда и только тогда, когда х и у являются соседними элементами списка s
Здравствуйте , из-за моих плохих занний lisp возникла проблема с задачей, буду благодарен если...

Определить среднее арифметическое число этого списка. Заменить элементы списка, которые больше среднего арифметического
Работаем с этим списком: A = Определить среднее арифметическое число этого списка. Заменить...

2
104 / 103 / 7
Регистрация: 28.08.2023
Сообщений: 152
01.11.2023, 17:51 2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
 
struct node {
  int data;
  struct node *next;
};
 
struct stack {
  struct node *top;
  int size;
};
 
struct node *new_node(int data) {
  struct node *node = malloc(sizeof(struct node));
  node->data = data;
  node->next = NULL;
  return node;
}
 
struct stack *new_stack() {
  struct stack *stack = malloc(sizeof(struct stack));
  stack->top = NULL;
  stack->size = 0;
  return stack;
}
 
bool is_empty(struct stack *stack) {
  return stack->size == 0;
}
 
void push(struct stack *stack, int data) {
  struct node *node = new_node(data);
  node->next = stack->top;
  stack->top = node;
  stack->size++;
}
 
int pop(struct stack *stack) {
  if (is_empty(stack)) {
    printf("Переполнение стека\n");
    exit(1);
  }
  int data = stack->top->data;
  struct node *temp = stack->top;
  stack->top = stack->top->next;
  free(temp);
  stack->size--;
  return data;
}
 
bool are_adjacent(struct stack *stack, int X, int Y) {
  int prev = pop(stack);
  while (!is_empty(stack)) {
    int curr = pop(stack);
    if ((prev == X && curr == Y) || (prev == Y && curr == X)) {
      return true;
    }
    prev = curr;
  }
  return false;
}
 
int main() {
  struct stack *stack = new_stack();
  push(stack, 1);
  push(stack, 2);
  push(stack, 3);
  push(stack, 4);
  push(stack, 5);
  int X = 3;
  int Y = 4;
  printf("Являются ли %d и %d соседними? %s\n", X, Y, are_adjacent(stack, X, Y) ? "Да" : "Нет");
  return 0;
}
0
...
1906 / 1326 / 965
Регистрация: 12.02.2013
Сообщений: 2,171
02.11.2023, 06:09 3
Мой вариант:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
 
typedef struct _Stack {
    int data;
    struct _Stack* next;
} Stack;
 
//-----------------------------------------------------------------------------
Stack* push(Stack** s, int d) {
    Stack* node = malloc(sizeof(Stack));
    node->data = d;
    node->next = *s;
    *s = node;
    return *s;
}
//-----------------------------------------------------------------------------
bool check(const Stack* s, int x, int y) {
    bool isRight = false;
    if (s) {
        for (; !isRight && s->next; s = s->next) {
            isRight = ((s->data == x) && (s->next->data == y))
                      || ((s->data == y) && (s->next->data == x));
        }
    }
    return isRight;
}
//-----------------------------------------------------------------------------
 
int main () {
    Stack* stack = NULL;
 
    for (int i = 0; i < 10; ++i) { // stack: 9 8 7 6 5 4 3 2 1 0
        push(&stack, i);
    }
 
    printf("%s\n", check(stack, 3, 4) ? "true" : "false"); // result: "true"
    printf("%s\n", check(stack, 2, 4) ? "true" : "false"); // result: "false"
    printf("%s\n", check(stack, 5, 8) ? "true" : "false"); // result: "false"
    printf("%s\n", check(stack, 6, 5) ? "true" : "false"); // result: "true"
 
    return 0;
}
0
02.11.2023, 06:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2023, 06:09
Помогаю со студенческими работами здесь

Сформировать два списка L1 и L2 из символов, оканчивающиеся точкой, и добавить в конец списка L1 все элементы списка L2
Помогите сделать. Сформировать два списка L1 и L2 из символов, оканчивающиеся точкой, и добавить в...

Примените рекурсию для создания списка, содержащего элементы списка L в заданном интервале
Примените рекурсию для создания списка, содержащего только те элементы списка L, которые имеют...

Clojure Написать функцию, для замены элементов списка y на соответствующие элементы списка x в списке w
Здравствуйте. Помогите написать функцию, осуществляющую замену элементов списка y на...

Для заданного списка строк построить новый список, элементы которого расположены в зеркальном отражении относительно исходного списка
Приветик!Мне нужна помощь...у меня очень легкая задачка.Для заданного списка строк построить новый...

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

Создать список L, элементы которого содержат все элементы списка L1 и нечетные элементы списка L2
Подскажите, пожалуйста, как решить. Я знаю как создать два списка, но не могу понять как их...

Используя производные классы, определить класс упорядоченного списка. Применить его для построения списка объектов типа Текстовая строка
Используя производные классы, определить класс упорядоченного списка. Применить его для построения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru