Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sofochka
0 / 0 / 1
Регистрация: 19.12.2013
Сообщений: 29
#1

Сортировка стеков - C++

19.12.2013, 21:20. Просмотров 355. Ответов 0
Метки нет (Все метки)

Надо отсортировать стек следующим образом:
до максимального элемента - по возрастанию;
после максимального по убыванию.

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

Просьба показать сортировку на данной программе

#include "stdafx.h"
#include "iostream"
#include "stack"
#include "conio.h"

int main () {
struct stack {
int dan;
stack* next;
stack* back;
};
stack* st = new stack; //Объявление стека структуры
st->back=NULL;
int v,c,n,max;
setlocale (LC_ALL,"Russian");
v=0;
while (v!=4){
system ("cls");
puts ("Меню");
puts ("1. Формирование стека и вывод элементов стека на экран");
puts ("2. Вычислить сумму всех элементов стека, затем изменить все элементы стека, увеличив их на значение максимального + Вывод изменёного стека");
puts ("3. Сортировка стека");
puts ("4. Выход");

printf ("Ваш выбор: ");
scanf ("%d",&v);
switch (v){

case 1: system ("cls");
puts ("Введите элементы стека (для окончания ввода введите 0): ");
n=0;c=1;
while (c!=0){
printf ("[%d] = ",n+1);
scanf ("%d",&c);
if (c!=0){
st->next=new stack; //Создание нового элемента
st->next->dan=c; //Занесение в новый элемент введёного числа
st->next->back=st; //Днищем следующего элемента является текущий элемент
st=st->next; //Переход к следующему элементу (указателю)
st->next=NULL; //Последний элемент является вершиной
n++;
}
}

puts ("Сформированный стек: ");
n=1;
while (st->back!=NULL) //Вывод до последнего элемента
{
printf("[%d] = %d\n",n,st->dan);
st=st->back; //Переход к следующему элементу
n++;
}
while (st->next!=NULL){ //Возвращение обратно к вершине стека
st=st->next;}
getch();
break;

case 2:
system ("cls");
c=0;max=0;
while (st->back!=NULL){
c+=st->dan;
st=st->back;}
printf ("Сумма элементов стека = %d",c);

while (st->next!=NULL){ //Возвращение обратно к вершине стека
st=st->next;}

while (st->back!=NULL)
{
if (st->dan>max) max=st->dan;
st=st->back;
}
printf ("\nМаксимальный элемент стека = %d",max);

while (st->next!=NULL){ //Возвращение обратно к вершине стека
st=st->next;}

while (st->back!=NULL){
st->dan*=max;
st=st->back;}


printf ("\nСодержимое стека: \n");
while (st->next!=NULL){ //Возвращение обратно к вершине стека
st=st->next;}
n=1;
while (st->back!=NULL) //Вывод до последнего элемента
{
printf("[%d] = %d\n",n,st->dan);
st=st->back; //Переход к следующему элементу
n++;
}

getch();
break;

case 3:
system ("cls");
while (st->next!=NULL){ //Возвращение обратно к вершине стека
st=st->next;}
n--;
int *mas = new int [n];
n=0;
while (st->back!=NULL){
mas[n]=st->dan;
n++;
st=st->back;}

for (int i=0;i<n;i++){
for(int j=0;j<n-i-1;j++){ // внутренний цикл прохода
if (mas[j]>mas[j+1]){
c=mas[j];
mas[j]=mas[j+1];
mas[j+1]=c;}
}
}

while (st->next!=NULL){ //Возвращение обратно к вершине стека
st=st->next;}

n=0;
while (st->back!=NULL){ //Заносим отсортированные элементы обратно в стек
st->dan=mas[n];
n++;
st=st->back;}

while (st->next!=NULL){ //Возвращение обратно к вершине стека
st=st->next;}

n=1;
while (st->back!=NULL) //Вывод до последнего элемента
{
printf("[%d] = %d\n",n,st->dan);
st=st->back; //Переход к следующему элементу
n++;
}

getch();
break;

} //Закрытие switch
} //Закрытие while основного меню
} //End Основного Тела программы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2013, 21:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка стеков (C++):

из 2-х стеков в один - C++
Подскажите, пожалуйста, есть такая задача: Дано 2 стека, элементы которых упорядочены по возрастанию. Создать 3-й стек из 2-х заданных в...

Реализация k-стеков - C++
Добрый день! Никак не могу найти информацию по реализации k-стеков. Задача состоит в следующем: 1. описать объектовый тип стек и взять...

Передача стеков - C++
Немного глупый вопрос, но всё же. Как нужно переписывать стек в стек? Т.е. у меня есть 2 стека. к примеру в стеке с именем Stack1 будет...

на основе стеков..... на С++ - C++
Всем привет!!! Нужна ваша помощь.... Проверить в выражении баланс скобок «(« и «)«.

Конкатенация (присоединение) стеков - C++
Привет всем, я имею код конкатинации (присоединения) строки в другую строку. Мне нужно его переделать не для строки а для стека!!! И все,...

Создание нескольких стеков - C++
//--------------------------------------------------------------------------- #pragma hdrstop #include &lt;tchar.h&gt; #include...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2013, 21:20
Привет! Вот еще темы с ответами:

Сравнение элементов стеков - C++
Даны два стека. Задача состоит в том, чтобы создать третий стек из элементов первого, которых нет во втором. Не могу найти ошибку,...

Из двух стеков в один - C++
Привет всем!) У меня есть вто такое задание : Using C++ functions written during the class, write C++ program that creates stacks A, B,...

Анализ применеия стеков - C++
Уважаемые, более опытные коллеги, прошу помочь по такому вопросу мне нужно сделать анализ по приминению стеков, тоесть где...

Шаблон для стеков - C++
Нужно написать шаблонный класс для работы со стеком элементов типа T. Я делаю так, чтобы в классе была структура Element, которая содержит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.