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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2014, 01:24   #1
_Лето_
Пользователь
 
Регистрация: 04.11.2013
Сообщений: 23
По умолчанию Упорядочить список целых чисел

Здравствуйте. Нужно создать список целых чисел. Упорядочить его элементы и вывести на печать. Списки можно создавать вводом из файла или с клавиатуры.
К тому же нужно сделать это не используя функцию sort()

Моя программа работает, но проблема в том, что я не знаю, как реализовать ввод с клавиатуры. Пожалуйста, помогите с этим.

Код:
#include <iostream>
 
using namespace std;
 
struct Node       //Структура являющаяся звеном списка
 {
     int x;     //Значение x будет передаваться в список
     Node *Next,*Prev; //Указатели на адреса следующего и предыдущего элементов списка
 };
 
 class List   //Создаем тип данных Список
 {
     Node *Head,*Tail; //Указатели на адреса начала списка и его конца
 
 public:
     List():Head(NULL),Tail(NULL){}; //Инициализируем адреса как пустые
     ~List(); //Деструктор
     void Show(); //Функция отображения списка на экране
     void Add(int x); //Функция добавления элементов в список
     void Sort();
 };
 
List::~List() //Деструктор
 {
     while (Head) //Пока по адресу на начало списка что-то есть
     {
         Tail=Head->Next; //Резервная копия адреса следующего звена списка
         delete Head; //Очистка памяти от первого звена
         Head=Tail; //Смена адреса начала на адрес следующего элемента
     }
 }
 
 void List::Add(int x)
 {
   Node *temp=new Node; //Выделение памяти под новый элемент структуры
   temp->Next=NULL;  //Указываем, что изначально по следующему адресу пусто
   temp->x=x;//Записываем значение в структуру
 
   if (Head!=NULL) //Если список не пуст
   {
       temp->Prev=Tail; //Указываем адрес на предыдущий элемент в соотв. поле
       Tail->Next=temp; //Указываем адрес следующего за хвостом элемента
       Tail=temp; //Меняем адрес хвоста
   }
   else //Если список пустой
   {
       temp->Prev=NULL; //Предыдущий элемент указывает в пустоту
       Head=Tail=temp; //Голова=Хвост=тот элемент, что сейчас добавили
   }
 }
 
 void List::Show()
 {
//ВЫВОДИМ СПИСОК С КОНЦА
     Node *temp=Tail;
      //Временный указатель на адрес последнего элемента
     while (temp!=NULL) //Пока не встретится пустое значение
     {
     cout<<temp->x<<" "; //Выводить значение на экран
     temp=temp->Prev; //Указываем, что нужен адрес предыдущего элемента
     }
     cout<<"\n";
/*
 //ВЫВОДИМ СПИСОК С НАЧАЛА
     temp=Head; //Временно указываем на адрес первого элемента
      while (temp!=NULL) //Пока не встретим пустое значение
     {
     cout<<temp->x<<" "; //Выводим каждое считанное значение на экран
     temp=temp->Next; //Смена адреса на адрес следующего элемента
     }
     */
     cout<<"\n";
 }
 
 void List::Sort()
 {
 
    Node * list = Head; // связанный список
    Node * node, * node2;
 
      for( node = list; node; node = node->Next )
        for( node2 = list; node2; node2 = node2->Next )
            if( node->x > node2->x ){ // если число из node меньше числа из node2 то переставляем их
                int i = node->x;
                node->x = node2->x;
                node2->x = i;
            }
 
     std::cout<<"\n";
 
 }
 
int main ()
{
// system("CLS");
 List lst; //Объявляем переменную, тип которой есть список
 lst.Add(1); //Добавляем в список элементы
 lst.Add(2);
 lst.Add(3);
 lst.Add(4);
 lst.Add(5);
 
 
 
 lst.Show(); //Отображаем список на экране
 lst.Sort();
  lst.Show();
 cout<<"\n";
 
 
//  system("PAUSE");
}
_Лето_ вне форума Ответить с цитированием
Старый 26.05.2014, 08:04   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
int main ()
{
// system("CLS");
 List lst; //Объявляем переменную, тип которой есть список

 for(int i=0,j=0;i<5;i++){
  scanf("%d",&j);
  lst.Add(j); //Добавляем в список элементы
 } 

 lst.Show(); //Отображаем список на экране
 lst.Sort();
  lst.Show();
 cout<<"\n";
 
 
//  system("PAUSE");
}
Идея ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упорядочить установкой массив целых чисел по убыванию. loya Паскаль, Turbo Pascal, PascalABC.NET 3 25.12.2013 13:07
Сформировать список целых чисел и посчитать сумму нечетных чисел bwitcher Помощь студентам 6 23.03.2013 18:08
Упорядочить заданный список целых методом Шелла. wowan30002 Общие вопросы C/C++ 1 20.11.2012 17:53
Дан массив x целых чисел. Упорядочить элементы, стоящие на четных местах по невозрастанию, а на нечетных – по неубыванию. NuclearMurder Помощь студентам 0 11.11.2012 17:43
связать список строк и список целых чисел lirikoff Помощь студентам 5 31.08.2010 13:23