min max двусвязного списка

141
17 октября 2021, 18:00

Необходимо найти минимальный и максимальный элемент в списке и обеспечитить вывод элементов списка, которые находятся между максимальным и минимальным элементом в обратном порядке. Функции нахождения мин и макс написала, функция вывода в обратном порядке тоже есть. Подскажите, как опеспечить вывод не всех элементов, а именно между макс и мин? Спасибо за внимание!

#include <iostream>
using namespace std;
struct t2node
{
    int info;
    t2node *next;
    t2node *prew;
};
typedef t2node * p2node;
void formDouble (p2node *left, p2node *right)
{
    int info;
    p2node cur;
    cur=nullptr;
    cin>>info;
    *left=*right=NULL;
    if (info)
    {
        *left = new t2node;
        (*left)-> info=info;
        (*left)->prew=NULL;
    }
    cur=*left;
    cin>>info;
    while (info)
    {
        cur->next= new t2node;
        cur->next->prew=cur;
        cur=cur->next;
        cur-> info=info;
        cin>>info;
    }
    cur->next=NULL;
    *right=cur;
}

void output1(p2node a) //функция вывода
{
    p2node cur;
    cur = a;
    while (cur) {
        cout <<" "<< cur->info;
        cur = cur->prew;
    }
    return;
}
t2node*  find_max( t2node* item) {
    t2node* tmp1 = item;
    for(; item != NULL; item = item->next){
        if(item->info > tmp1->info)
            tmp1 = item;
    }
    return tmp1;
}
t2node*  find_min( t2node* item) {
    t2node* tmp2 = item;
    for(; item != NULL; item = item->next){
        if(item->info < tmp2->info)
            tmp2 = item;
    }
    return tmp2;
}
//pnode *find_max(pnode *item) {
//
//   pnode* tmp = item;
//    for(; (item) != NULL; (item) = (item)->next){
//        if((item)->info > tmp->info)
//            tmp = item;
//    }
//    return tmp;
//}

int main() {
    p2node l,r;
    p2node val1 = NULL;
    p2node val2 = NULL;
    formDouble(&l,&r);
    val1=find_max(l);
    cout<<(val1)->info<<endl;
    val2=find_min(l);
    cout<<(val2)->info;

    cout<<" ";

    return 0;
}

Answer 1

void output2(p2node min, p2node max) //функция вывода
{
    p2node cur1=min;
    p2node cur2=max;
    while (cur1 && cur2) {
        cout <<" "<< cur1->info;
        cur1 = cur1->next;
    }
    return;
}

Вроде есть, принимаю критику))

READ ALSO
создание бинарного дерева

создание бинарного дерева

Пишу функции ввода/ вывода бинарного дерева различными методами Но после ввода элементов(пока не 0) ничего не происходит, помогите разобраться,...

90
class c++ многофайловый проект

class c++ многофайловый проект

не могу скомпилировать многофайловый проект

105
setInterval ускоряется [дубликат]

setInterval ускоряется [дубликат]

Когда нажимаю на кнопку несколько раз, выполняет за 1 секунду по несколько разВ чем проблема?

96
Каким инструментом можно объединять в блоки CSS, JS и HTML?

Каким инструментом можно объединять в блоки CSS, JS и HTML?

Нужен инструмент, способный создавать сайт по методологии БЭМ, а для этого нужно как-то объединять отдельные независимые блоки html кода, к которому...

111