Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

SaDFromSpb



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
#include <iostream>
#include <fstream>
 
using namespace std;
 
 
struct list_t {
    int ndx;
    list_t* next;
};
 
 
 
void printlist(list_t* list)
{
    list_t* first = list;
    do {
        cout << list->ndx << " ";
        list = list->next;
    } while (list->next != first->next);
 
    cout << endl;
}
 
 
 
// Поиск элемента c номером n.  
// Возвращает указатель на элемент.
// Если такого нет, возвращает NULL
list_t* find(list_t* list, int n)
{
    list_t* first = list;
    while (list->ndx != n && list->next != first)
        list = list->next;
     
    if (list->ndx == n)
        return list;
    else
        return NULL;
}
 
 
 
// возвращает false, если такого элемента нет в списке
bool insert(list_t* list, int n, int x)  // Вставить x после n
{
 
    list_t* elem = find(list, n);
     
    if (elem == NULL) return false;
     
 
    list_t* pl = new list_t;
    pl->ndx = x;
    pl->next = elem->next;
    elem->next = pl;
 
    return true;    
}
 
 
 
 
// возвращает false, если такого элемента нет в списке
bool del(list_t* list, int n)
{
    list_t* elem = find(list, n);
 
    if (elem == NULL) return false;
 
    list_t* nxt = elem->next;
    elem->ndx = nxt->ndx;
    elem->next = nxt->next;
 
    delete nxt;
 
    // Хотя лучше делать через нахождение предшествующего элемента,
    // если копировать содержание элемента дорого.
 
    return true;
}
 
 
 
 
int main(int argc, char* argv[])  
{
    // Создаем первый элемент в списке, котрый ссылается сам на себя
    list_t plist;
    plist.ndx  = 1;
    plist.next = &plist;
 
     
    insert(&plist, 1, 4);
    printlist(&plist);
    insert(&plist, 4, 5);
    printlist(&plist);
    del(&plist, 4);
    printlist(&plist);
 
 
    return 0;
}

Всего записей: 209 | Зарегистр. 22-06-2004 | Отправлено: 03:03 26-04-2006
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru