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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2014, 08:41   #1
Nickolay0512
Пользователь
 
Регистрация: 26.10.2013
Сообщений: 54
По умолчанию Написать сортировку односвязного списка

Здравствуйте. Написал программу для работы со списком. Программа работает, но не получается написать сортировку по полю pole. Помогите пожалуйста
Код:
#include <iostream>
using namespace std;
 
struct node
{
    char family[20];
    char name[20];
    char otchestvo[20];
    int god;
    int pole = 2014 - god;
    struct node* next;
};
typedef struct node* Node_ptr;
//формирование списка
Node_ptr input(int n)
{
    Node_ptr p = NULL, head = NULL, pred = NULL;
    for (int i = 0; i<n; i++)
    {
        if (head == NULL)
        {
            head = new struct node;
            cout << "student nomer " << i + 1 << endl;
            cout << "Vvedite familiyu: ";
            cin >> head->family;
            cout << "Vvedite imya: ";
            cin >> head->name;
            cout << "Vvedite otchestvo: ";
            cin >> head->otchestvo;
            cout << "Vvedite god rojdeniya: ";
            cin >> head->god;
            head->next = NULL;
            pred = head;
        }
        else
        {
            p = new struct node;
            cout << "student nomer " << i + 1 << endl;
            cout << "Vvedite familiyu: ";
            cin >> p->family;
            cout << "Vvedite imya: ";
            cin >> p->name;
            cout << "Vvedite otchestvo: ";
            cin >> p->otchestvo;
            cout << "Vvedite god rojdeniya: ";
            cin >> p->god;
            p->next = NULL;
            pred->next = p;
            pred = p;
        }
    }
    return head;
}
//печать списка
void print_node(Node_ptr p)
{
    Node_ptr x = p;
    while (x != NULL) // пока не достигнут конец списка
    {
        // вывод на экран значений информационного поля
        cout << x->family << endl;
        cout << x->name << endl;
        cout << x->otchestvo << endl;
        cout << x->god << endl;
        cout << "-----------------------" << endl;
        x = x->next; // переход к следующему элементу списка
    }
    cout << endl;//перевод курсора на новую строку
}
 
 
int main()
{
    int n;
    Node_ptr p;
    cout << "Vvedite kolichestvo elementov spiska: ";
    cin >> n;
    p = input(n);
    cout << "Vvedenniy spisok" << endl;
    print_node(p);
    system("pause");
}
Nickolay0512 вне форума Ответить с цитированием
Старый 26.09.2014, 09:51   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
void sorta(Node_ptr item){
 for(Node_ptr i=item;i;i=i->next)
  for(Node_ptr j=item;j;j=j->next)
   if(i->pole>j->pole){
     Тут меняем местами то что в *i и то что в *j
   }
}
На счет смены местами это ты уже сам, бо я не помню как в Сях точно делаются такие вещи.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сортировка односвязного списка Levenyatko Общие вопросы C/C++ 0 05.07.2012 22:12
Сортировка односвязного списка (C++) biograf Помощь студентам 0 14.12.2010 21:21
Сортировка односвязного списка amerhant Общие вопросы C/C++ 1 13.05.2010 20:25
Сортировка односвязного списка btf Общие вопросы C/C++ 0 15.02.2010 14:40
Cортировка односвязного списка alesfoss Общие вопросы C/C++ 3 30.03.2009 19:46