Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2010, 21:20   #1
gvenog
Новичок
Джуниор
 
Регистрация: 13.12.2010
Сообщений: 1
По умолчанию В двусвязном списке продублировать те элементы, которые меньше следующего, но больше больше предыдущего.

Код:
struct LIST {
        int info;
        LIST *next;
        LIST *prev;
 
 
};


LIST *head;
int n1, n2;
 
void Initial()
{
        head = new LIST;
        head->next=head;
        head->prev=head;
 
 
}
 
int Empty()
{
        if (head->next==head && head->prev==head)
                return 1;
        else
                return 0;
 
 
}
 
LIST *SearchOnward(int num)
{
        LIST *tmp=head->next;
        while(tmp!=head && tmp->info!=num)
        {
                tmp=tmp->next;
                n1+=1;
        }
        if (tmp!=head)
                return tmp;
        else
                return NULL;
 
 
}
 
LIST *SearchBack(int num)
{
        LIST *tmp=head->prev;
        while(tmp!=head && tmp->info!=num)
        {
                tmp=tmp->prev;
                n2+=1;
        }
        if (tmp!=head)
                return tmp;
        else
                return NULL;
 
 
}
 
int Del(int num)
{
        LIST *current=SearchOnward(num);
        if (current!=NULL)
        {
                current->prev->next=current->next;
                current->next->prev=current->prev;
                delete current;
                return 1;
        }
        return 0;
 
 
} 
 
int AddAfter(int num, int point)
{
        if (Empty()==1)
        {
                LIST *tmp=new LIST;
                tmp->next=head;
                tmp->prev=head;
                tmp->info=num;
                head->next=tmp;
                head->prev=tmp;
                return 1;
        }
        LIST *current=SearchOnward(point);
        if (current!=NULL)
        {
                LIST *tmp=new LIST;
                tmp->next=current->next;
                tmp->prev=current;
                tmp->info=num;
                current->next->prev=tmp;
                current->next=tmp;
                return 1;
        }
        return 0;
 
 
}
 
int AddBefore(int num, int point)
{
        LIST *current=SearchBack(point);
        if(current!=NULL)
        {
                LIST *tmp=new LIST;
                tmp->info=num;
                tmp->next=current;
                tmp->prev=current->prev;
                current->prev->next=tmp;
                current->prev=tmp;
                return 1;
        }
        return 0;
 
 
}
 
void ShowOnward()
{
        LIST *tmp=head->next;
        cout << endl << "В прямом направлении:" << endl;
        while(tmp!=head)
        {
                cout << tmp->info << " ";
                tmp=tmp->next;
        }
        cout << endl;
 
 
}
 
void ShowBack()
{
        LIST *tmp=head->prev;
        cout << endl << "В обратном направлении:" << endl;
        while(tmp!=head)
        {
                cout << tmp->info << " ";
                tmp=tmp->prev;
        }
        cout << endl;
 
 
}
 
int Double()
{
}
В функции Double() хотела сделать это самое дублирование, но столкнулась с проблемой сравнения элементов и копирования со сдвигом элементов в списке. Можете объяснить как это сделать?
gvenog вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить сумму тех веществееных чисел,которые больше Р. [Паскаль] Анна22 Помощь студентам 1 07.12.2010 20:34
выборка записей с датой больше указанной и временем больше указанного Lokos БД в Delphi 2 30.11.2010 07:35
Где найти исходники на Java( 1 проект - больше 1000 классов, 2 проект - больше 100, 3 проект - больше 10) Pti44ka Общие вопросы по Java, Java SE, Kotlin 2 09.09.2010 21:31
Чем больше объектов - тем меньше скорость? Diego__ Microsoft Office Word 6 05.01.2010 01:39