Код программы
Рисунок 52 – код программы.
Результат работы программы
Рисунок 53 - результат выполнения программы.
Рисунок 54 – результат сохранения программы.
Лабораторная работа 23
Постановка задачи
Условие задачи: Создать линейный однонаправленный список из 10 целых чисел. Удалить из списка элемент перед первым элементом со значением 55.
Исходные данные:
sNode – список, введенный пользователем.
Алгоритм решения:
Запросим пользователя ввести список.
Создадим список и заполним его с клавиатуры.
Удалим элемент, стоящий после первого значения 55 .
Выведем результат.
Контрольный пример:
Входные данные: 1 2 3 4 55 6 7 8 9 0;
Результат: 1 2 3 55 6 7 8 9 0.
Словесное описание программы:
Шаг 1 (подключение библиотек, объявление списка):
#include
#include
#include
typedef struct sNode {
struct sNode* next;
int data;
}tNode;
Шаг 2 (реализация функции создания листа):
tNode* listCreate(int a)
{
tNode* tmp = (tNode*)malloc(sizeof(tNode));
tmp->data = a;
tmp->next = NULL;
return(tmp);
}
Шаг 3 (реализация функции добавления элемента в список):
void listAdd(int data, tNode * head)
{
tNode* tmp = (tNode*)malloc(sizeof(tNode));
tmp->data = data;
tmp->next = NULL;
tNode* p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = tmp;
}
Шаг 4 (реализация функции вывода списка):
void nodeOutput(tNode * head)
{
printf("\n");
while (head != NULL)
{
printf("%d ", head->data);
head = head->next;
}
printf("\n");
}
Шаг 5 (реализация функции удаления необходимого элемента)
tNode* removeElement(tNode * head)
{
tNode* p = head;
while (p->next != NULL)
{
if (p->next->next->data == 55)
break;
p = p->next;
}
if (p->next == NULL)
return;
tNode* tmp = p;
p = p->next;
tNode* tmp2 = p;
p = p->next;
tNode* tmp3 = p;
free(tmp2);
tmp->next = tmp3;
}
Шаг 6 (функция main:локализация консоли, объявление переменных):
main()
{
system("chcp 1251");
system("cls");
tNode* first = 0;
int length;
int addValue;
Шаг 7 (запрос к вводу размеров листа и элементов списка):
printf("Input size of a list:");
scanf("%d", &length);
for (int i = 0; i < length; i++)
{
printf("Input %d element:\n", i + 1);
scanf("%d", &addValue);
if (i == 0)
{
first = listCreate(addValue);
}
else {
listAdd(addValue, first);
}
}
Шаг 8 (удаление элемента и вывод результата):
removeElement(first);
printf (" Result is :");
nodeOutput(first);
}
Код программы
Рисунок 55 – код программы.
Результат работы программы
Рисунок 56 - результат выполнения программы.
Лабораторная работа 24
Постановка задачи
Условие задачи: Дана строка вида s*w (s, w – строки из символов, не содержащих символа *). Чтение разрешено по одному символу. Проверить, является ли строка w обратной строке s. Например, для случая s = ABCDEF, w =FEDCBA ответ положительный.
Исходные данные:
text – строка, введенная пользователем.
Алгоритм решения:
Запросим пользователя ввести строку.
Выведем в отдельную строку первую половину текста и отразим ее.
Выведем в отдельную строку вторую половину текста .
Сравним значения и выведем результат..
Контрольный пример:
Входные данные: машинаанишам;
Результат: Строка w обратна строке s.
Блок- схема программы
Рисунок 57 – Блок-схема программы.
Код программы
Рисунок 58 – код программы.
Результат работы программы
Рисунок 59 - результат выполнения программы.
Достарыңызбен бөлісу: |