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

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

Вернуться   Форум программистов > C/C++ программирование > C/C++ Базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2013, 15:32   #1
Євгеній Бєлік
Пользователь
 
Аватар для Євгеній Бєлік
 
Регистрация: 29.10.2011
Сообщений: 52
По умолчанию Сортировка связного списка по алфавиту

Каким образом можно отсортировать связный список по алфавиту, код самой программы ниже, что и как нужно добавить что бы по алфавиту оно сортировало.
Код:
#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

typedef char TE;
struct element
{
 TE ch;
 element *next;
};

element* CreatList();
element *sort (element *ph);
element* DeleteItem(element* ptr);
int count(element* ptr);
void adding (element* dod);

element* CreatList()
{
 element *FIRST, *CURRENT;
 string ans;

 cout<< "Input first character: ";
 FIRST=CURRENT=new element;
 cin>> CURRENT->ch;

 cout<< "Do you want input new character? (y for yes and 'ex' for exit): ";
 cin >> ans;

 while(ans != "ex")
           {
           CURRENT->next = new element;
           CURRENT = CURRENT->next;
           cout << "Input character:  ";
           cin>>CURRENT->ch;
           cout<< "Do you want input new character? (y for yes and 'ex' for exit): ";
           cin>> ans;
           }

 CURRENT->next = NULL;

 return FIRST;
}

int count(element* ptr)
{
 int result = 0;
 if(!ptr)
 {
 cout << "List is empty!";
 }

 while(ptr)
 {
 result++;
 ptr=ptr->next;
 }
 return result;
}

void adding (element* FIRST)
{
 element *CURRENT, *dod;
 int m=0;

 dod=FIRST;
 cout<<"Add a new element after (number): ";
 cin >> m;
 CURRENT=new element;

 for (int i=0; i<m; i++)
 {
  dod=dod->next;
 }
 CURRENT->next=dod;

 cout << "Input character: ";
 cin >> CURRENT->ch;

 dod=FIRST;
 for (int i=0; i<m-1; i++)
 {
  dod=dod->next;
 }
 dod->next=CURRENT;
}

element* DeleteItem(element* ptr)
{
 element* CUR=ptr->next;
 delete ptr;
 return CUR;
}

int main()
{
 element* first, *current;
 int N=1, res=0;
 //СТВОРЕННЯ СПИСКУ
 first=CreatList();
 //КІНЕЦЬ СТВОРЕННЯ

 //ВИВЕДЕННЯ СПИСКУ
 current=first;
 while (current)
     {
     cout << N <<"   "<<current->ch<<"\n";
     current=current->next;
     N++;
     }
 //КІНЕЦЬ ВИВЕДЕННЯ

 //КІЛЬКІСТЬ ЕЛЕМЕНТІВ
 current=first;
 res=count(current);
 cout<<"Number of elements = "<<res<<"\n";
 //КІНЕЦЬ КІЛЬКІСТЬ

 //ДОДАВАННЯ ЕЛЕМЕНТУ
 adding (first);
 //КІНЕЦЬ ДОДАВАННЯ

 //ДРУГЕ ВИВЕДЕННЯ
 N=1;
 current=first;
 while (current)
     {
     cout << N <<"   "<<current->ch<<"\n";
     current=current->next;
     N++;
     }
 //КІНЕЦЬ ВИВЕДЕННЯ

 //ВИДАЛЕННЯ СПИСКУ
 N=1;
 current=first;
 while(current)
     {
     current=DeleteItem(current);
     }
 //КІНЕЦЬ ВИДАЛЕННЯ

 system("pause");
 return 0;
}
Євгеній Бєлік вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание связного списка на Си zx11 Общие вопросы C/C++ 9 17.03.2014 00:54
Удаление связного списка из памяти Mahin Общие вопросы C/C++ 3 13.07.2012 10:10
сортировка списка строк по алфавиту -GT- Общие вопросы C/C++ 0 26.11.2009 20:27
сортировка узлов связного списка pavelstraut Общие вопросы C/C++ 5 28.07.2009 23:27