Имплементация с динамичен масив
Имплементация със свързан списък
Използвайте структурата от данни стек за решаването на следните задачи:
Задача 1:
Проверете дали даден едносвързан списък с char елементи е палиндром.
Пример:
Входен списък: A -> B -> C -> D -> C -> B -> A
Резултат: Is Palindrome
Задача 2:
Даден е двусвързан списък от стрингове. Всеки елемент от списъка се състои от отварящи и затварящи скоби. Напишете функция, която намира най-дългата последователност от балансирани скоби във всеки стринг и модифицира списъка като на мястото на низа записва намерената дължина.
Пример:
Входен списък: ()))((()())(() <=> ()() <=> (((( <=> (()())(() <=> ((()() <=> )))()))()
Резултат: 6 <=> 4 <=> 0 <=> 6 <=> 4 <=> 2
Задача 3:
За всеки елемент от двусвързан списък да се намери първия най-голям елемент, намиращ се от дясната му страна и да се принтира получения резултат. Ако не е намерен най-голям елемент, то за такъв се приема -1. (задачата трябва да бъде решена с едно обхождане на списъка)
Пример:
Входен списък: 15 <=> 9 <=> 2 <=> 3 <=> 1 <=> 5 <=> 13
Резултат: 2 -> 3
1 -> 5
3 -> 5
5 -> 13
9 -> 13
13 -> -1
15 -> -1
Задача 4:
Дефинирайте функция, която намира елементите в двусвързан списък, които са по-големи от всички елементи, намиращи се вдясно от тях и съставя нов списък с намерените елементи, намиращи се в обратен ред на първоначалното им разположение във входния списък. (задачата трябва да бъде решена с едно обхождане на списъка)
Пример:
Входен списък: 3 <=> 9 <=> 2 <=> 8 <=> 3 <=> 2 <=> 1 <=> 4 <=> 7
Резултат: 7 <=> 8 <=> 9
Задача 5:
Дефинирайте функция, която обръща всеки К елемента в двусвързан списък. Решете задачата по два начина - рекурсивно и със стек.
Пример:
Входен списък: 1 <=> 2 <=> 3 <=> 4 <=> 5 <=> 6 <=> 7 <=> 8 <=> 9 <=> 10, К = 3
Резултат: 3 <=> 2 <=> 1 <=> 6 <=> 5 <=> 4 <=> 9 <=> 8 <=> 7 <=> 10