Односвязный список

Тема в разделе "C/C++/C#", создана пользователем Melkaya, 21 июн 2010.

  1. Melkaya

    Melkaya Гость

    Надо написать функцию, которая вставляет в список элемент со значением n после первого элемента со значением m.
    Реализовать как односвязный список(используя динамические структуры).
    Должны быть возможности добавить в конец списка новый элемент, выпечатать список, уничтожить его.

    Можете кто нибудь, пожалуйста, помочь с этим заданием? Заранее спасибо
     
  2. Sailor

    Sailor Гость

    за отдельную умеренную плату могу решить данную задачу если хочешь пиши на мыло andrey-gitara@yandex.ru
     
  3. patriot2008

    patriot2008 Гость

    пиши на washington2006[at]rambler.ru Выполню быстро и качественно.
     
  4. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Код (C++):
    #include <iostream>


    using namespace std;

    //Структура данных списка
    struct sList
    {
    int Value;
    sList *ptr;
    };

    //Класс динамического списка
    class dinList
    {
    sList *Start; //Указатель на начало списка
    sList *End; //Указатель на конец списка

    public:
    dinList() //Конструктор
    {
    Start = NULL;
    }

    //Функция добавление в конец
    void Add(int Value)
    {
    sList *lNew = new sList;
    lNew->ptr = NULL;
    lNew->Value = Value;

    if (Start == NULL) { Start = lNew; End = lNew;}
    else {
    End->ptr = lNew;
    End = lNew;
    }
    }

    //Функция получение значения из конца
    int GetValue(void)
    {
    return End->Value;
    }

    //Функция удаления из конца
    void Del(void)
    {
    sList *Buf = Start;
    while (Buf->ptr != End) //Пока следующий элемент ни стал указателям конца
    {
    Buf = Buf->ptr;
    }
    Buf->ptr = NULL;
    delete End;
    End = Buf;
    }

    //Функция очистки списка
    void Empty(void)
    {
    sList *Buf = Start;
    Start = NULL;
    while (Buf)
    {
    sList *Temp = Buf->ptr;
    delete Buf;
    Buf = Temp;
    }
    }

    //Функция вставки элемента Value сразу за первым элементом со значением Dest
    //Если такой элемент не найден вставка происходит в конец списка
    void AddInVal (int Value, int Dest)
    {
    sList *Buf = Start;
    while (Buf)
    {
    if (Buf->Value == Dest)
    {
    sList *lNew = new sList;
    lNew->ptr = Buf->ptr;
    lNew->Value = Value;
    Buf->ptr = lNew;
    return;
    }
    Buf = Buf->ptr;
    }
    Add(Value);
    }

    //Функция вывода всех элементов списка
    void Print (void)
    {
    sList *Buf = Start;
    while (Buf)
    {
    cout<< Buf->Value<<" ";
    Buf = Buf->ptr;
    }
    cout<<endl;
    }

    };


    int main(void)
    {
    dinList a;//Определение списка
    //Тесты
    a.Add(1); //Добавим 1
    a.Add(3); //Добавим 3
    a.Add(5); //Добавим 5
    a.AddInVal(12,3); //Добавим 12 после 3
    a.Print(); //Вывод на экран
    a.Del(); //Удалить последний
    a.Del(); //Удалить последний
    a.Print(); //Вывод на экран
    cout<<a.GetValue(); //Получить последний
    a.Empty(); //Очистить
    a.Print(); //Вывод на экран
    return 0;
    }
     
Загрузка...
Похожие Темы - Односвязный список
  1. ЮрийПрп
    Ответов:
    1
    Просмотров:
    3.159
  2. gx6060
    Ответов:
    2
    Просмотров:
    431
  3. gx6060
    Ответов:
    6
    Просмотров:
    567
  4. Shandrik
    Ответов:
    6
    Просмотров:
    809
  5. anna
    Ответов:
    8
    Просмотров:
    813

Поделиться этой страницей