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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2016, 01:18   #1
Natusik86
 
Аватар для Natusik86
 
Регистрация: 28.10.2016
Сообщений: 3
По умолчанию Односвязный список, функция обнаружения экземпляров C++

Добрый день.

Нужна функция, которая узнаёт, все ли значения, которые встречаются в одноправленном списке, имеются хотя-бы в 2 экземплярах. Нашлa похожую, но не знаю как адптировать и правильно вызвать в "main." Получилось написать функции для добавления, удаления и вывода. Спасибо.

Код:
#include <iostream>
#include <string>
using namespace std;
 
 
//Односвязний список
class LinkedList
{
    struct node
    {
        int number;
        node * next;
    };
 
    node * first, * last;
public:
 
    LinkedList()//конструктор
    {
        first = NULL;
        last = first;
    }
 
    ~LinkedList();//деструктор
 
    void Add( int number );
    void PushBack( int index );
    void Print();
};
 
LinkedList::~LinkedList()//деструктор
{
    node *next;
 
    while( first != NULL )//убираем первый элемент и соеденяем с начало с 2. элементом(повтор, пока нет следующего элемента)
    {
        next = first->next; 
        delete first;
        first = next;
    }
 
    cout<<"Список стёрт!\n";
};
 
void LinkedList::Add(int number)//добавить элемент
{
    node *p = new node();//делает новый элемент
    p->number = number;
    p->next = NULL;
 
    if (first == NULL)//если нет элементов
        first = p;  
    else
        last->next = p;//за последним элементом добавляют следующий
 
    last = p;//last укажет на новый элемент, который теперь последний
    cout<<"Добавлено:"<<number;
};
 
void LinkedList::search(void)
{
    LEL *pel=list;
 
     while(pel->next!=NULL)     //цикл сравнения элементов
 
   {
     while(pel->next!=NULL)
 
      {
     pel=pel->next;     
 
     if(list->index==pel->index)        //если есть одинаковые элементы - выходим из цикла 
 
     {
       cout<<"В списке все элементы по 2!"<<endl;
 
       exit(0);
     }
 
    }
 
        pel=list->next;
 
       list=list->next;
    }
  }
 
void LinkedList::Print()//вывод списка
{
    node *link = first;
 
    while(link != NULL)//повторяется, пока элемент 
    {
        cout<<link->number;//вывод значения элемента
 
        link = link->next;
 
        if (link!=NULL)cout<<", ";
    }
};
 
int main()
{
    int ok;
 
    do
    {
        LinkedList * list = new LinkedList();//Новый односвязний список
 
        while (true)
        {
            string command;
 
            cout<<"Что делать? [add, search, print, delete]? :";
            cin>>command;//ввод команды
 
            if (command == "delete")
            {
                delete list;//стерает список
                break;
            }
 
            if (command == "add" || command == "search")
            {
                int i;
 
                cin>>i;
 
                if (command == "add")//добавить число i
                    list->Add(i);
                else if (i >= 0) //переставить i елемент
                    list->PushBack(i);
                else cout<<"Индекс должен быть целое число!\n";
            }
 
            if (command == "print")
                list->Print();//вывод значения
 
            cout<<endl;
        }
 
 
        cout << "\n Продолжить(1) или закончить (0)?\n" << endl;
        cin >> ok;
    }
    while (ok == 1);
 
 
 
    return 0;
}
Natusik86 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часть кода сделал. Односвязный список без заглавного звена. Динамическая память. Перевернуть список и считать в обратном порядке. Varner Общие вопросы Delphi 5 19.05.2016 17:30
Создать односвязный список и вывести его на экран. Из этого списка создать новый список по указанному ниже правилу и новый список San111 Паскаль, Turbo Pascal, PascalABC.NET 1 15.05.2012 22:08
Необходимо реализовать классы, односвязный список для хранения целых чисел, односвязный список для хранен lineico Помощь студентам 2 09.05.2011 17:45
Односвязный список masha17 Общие вопросы C/C++ 1 09.12.2009 12:20
C++. Односвязный список. Уничтожить список Olya90 Помощь студентам 2 10.06.2009 18:52