Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Есть структура - элемент двусвязного списка

73K
07 июня 2014 года
Alexeyvolsh
18 / / 19.08.2013
Есть структура - элемент двусвязного списка

 
Код:
struct Titm{
    Titm * prv;
    int itm;
    Titm * nx;
};
Нужно написать для него следующие функции:

 
Код:
 
Titm * create(int val){


};
bool Next(Titm ** elem){


};
[/code]Поможете?
326
07 июня 2014 года
sadovoya
757 / / 19.11.2005
Обратись к крутому фрилансеру сюда :)
11K
07 июня 2014 года
xAtom
65 / / 17.01.2011
Вот 2-ух связной список правда кольцевой, да и пофиг.

Код:
#include <iostream>
using namespace std;

struct Titm{
    int   itm;
    Titm* next;
    Titm* prev;
};

// добавление в конец списка
void  add(Titm** lst, int itm) {
    Titm* p = new Titm();
    p->itm  = itm;
    if(*lst != NULL){
        p->next = *lst;
        p->prev = (*lst)->prev;
        (*lst)->prev->next = p;
        (*lst)->prev       = p;
    } else {
        *lst = p;
        p->next = *lst;
        p->prev = *lst;
    }      
}

//удаление всего списка
void clear(Titm* lst){
    Titm* tmp, *ptr;
    if(lst != NULL){
        ptr = lst;
        do {
            tmp = ptr;
            ptr = ptr->next;
            delete tmp;
        } while(ptr != lst);
    }
}



int main(void){
    Titm* lst = NULL;
    for(int i = 0; i < 10; ++i)
        add(&lst, i);

    //вывести в обратном порядке
    const Titm* p = lst->prev;
    do {
        cout << p->itm << ' ';
        p = p->prev;
    } while(p != lst->prev);
    cout << endl;

    //вывести в прямом порядке
    p = lst;
    do {
        cout << p->itm << ' ';
        p = p->next;
    } while(p != lst);
    cout << endl;

    clear(lst);
    cin.get();
    return 0;
}
73K
07 июня 2014 года
Alexeyvolsh
18 / / 19.08.2013
Цитата: xAtom
Вот 2-ух связной список правда кольцевой, да и пофиг.

Код:
#include <iostream>
using namespace std;

struct Titm{
    int   itm;
    Titm* next;
    Titm* prev;
};

// добавление в конец списка
void  add(Titm** lst, int itm) {
    Titm* p = new Titm();
    p->itm  = itm;
    if(*lst != NULL){
        p->next = *lst;
        p->prev = (*lst)->prev;
        (*lst)->prev->next = p;
        (*lst)->prev       = p;
    } else {
        *lst = p;
        p->next = *lst;
        p->prev = *lst;
    }      
}

//удаление всего списка
void clear(Titm* lst){
    Titm* tmp, *ptr;
    if(lst != NULL){
        ptr = lst;
        do {
            tmp = ptr;
            ptr = ptr->next;
            delete tmp;
        } while(ptr != lst);
    }
}



int main(void){
    Titm* lst = NULL;
    for(int i = 0; i < 10; ++i)
        add(&lst, i);

    //вывести в обратном порядке
    const Titm* p = lst->prev;
    do {
        cout << p->itm << ' ';
        p = p->prev;
    } while(p != lst->prev);
    cout << endl;

    //вывести в прямом порядке
    p = lst;
    do {
        cout << p->itm << ' ';
        p = p->next;
    } while(p != lst);
    cout << endl;

    clear(lst);
    cin.get();
    return 0;
}


Я просто посмотреть а переделывать буду сам под конкретные цели. Так что извини и спасибо

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог