Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Однонаправленные списки (стэк) 
:(
    Опции темы
Kingl
  Дата 2.2.2014, 03:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 13.5.2007

Репутация: нет
Всего: нет



Написать программу по созданию, просмотру, добавлению и решению поставленной задачи для однонаправленного линейного списка (стек и/или очередь).
Создать список из случайных целых чисел в диапазоне от 1 до 10, определить наиболее часто встречающееся число и удалить его.

Как я понимаю после того как я ввел числа в стэк, мне их надо от туда извлечь, записать в строку, там удалить числа которые чаще всего повторяются и потом опять уже новую эту строку записать в стэк обратно??? Если так то подскажите как из стека преобразовать в строку, ну или может есть еще какие-то варианты?
Код


#include<stdio.h>//для работы с потоками ввода вывода
#include<malloc.h>//для работы с динамической памятью
#include<conio.h>//для работы с консолью
#include<locale.h>//для подключения русского языка
#include<stdlib.h>//стандартная библиотека

struct Stack 
{
    int info;
    Stack *Next;
};
Stack *begin, *t;
Stack* Create(Stack *);//функция типа Stack для создания стэка
void prosm();//функция для просмотра содержимого стэка
void exit();//функция выхода и освобождения памяти

void main()//главная функция определяющая работу всей программы
{
int punkt,rp;//вводим целочисленные переменные: punkt-для определения пункта меню, rp-для выполнения цикла заполнения стэка
setlocale(LC_CTYPE,"Russian");//подключаем русский язык
do//начало цикла для работы меню программы 
{
fflush(stdin);//чистим буфер    
system("cls");//чистим экран
printf ("Выберите пункт меню:\n");
puts("1-создание списка;");
puts("2-просмотр списка;");
puts("3-добавление элементов списка;");
puts("4-решение поставленной задачи;");
puts("0-выход;");
scanf("%d",&punkt);//вводим число соответствующее пункту меню
     switch (punkt)//цикл выбранного пункта меню 
        {
        case 1:case 3://если выбран пункт 1 или пункт 3
           {
             system("cls");//чистим экран
             rp=1;//присваиваем переменной значение 1 для осуществления работы цикла заполнения стэка 
             if (punkt==1)//если меню 1
               {
                begin=NULL;//стэк пуст
               }
             while(rp)//пока значение переменной rp не 0 цикл будет работать
               {
               begin=Create(begin);//вершине стэка присваиваем значение t которое возвращает вызванная функция
               printf("Для прекращения ввода введите-0: ");
               scanf("%d",&rp);//вводим число для переменной rp по которому будет определена дальнейшая работа цикла
               }
            break;//прерываем цикл выходим в меню
            }
        case 2:prosm();break;//при выборе пункта меню 2 вызываем функцию просмотра содержимого стэка
    
        case 0: exit();break;//при выборе пункта меню 0 вызываем функцию выхода из программы
     }
  }
     while(1);//цикл меню программы выполняется бесконечно
_getch();//ввод любой клавиши
}
Stack* Create(Stack *begin) 
{    
Stack *t = (Stack*)malloc(sizeof(Stack));
printf("\n Введите элемент списка:");
scanf("%d", &t -> info);
        t -> Next = begin;
return t;
}

void prosm() 
{    
Stack *t = begin;
if(begin == NULL) {            
puts(" Стек пуст! ");
return;
        }
while( t != NULL) {
printf(" %d \n", t->info);
            t = t -> Next;
        }
_getch();
    }        

 void exit()//функция выхода
 {
      system("cls");//чистим экран
     while(begin!=NULL)//цикл будет работать пока стэк неопустеет
     {
         t=begin;//текущему значению присвоим значение вершины
         begin=t->Next;//вершине присвоим значение следующего элемента
             free(t);//очистим текущее значение
     }
     if(begin==NULL)//проверим стэк на наличие элементов
        puts("Память очищена! Нажмите любую клавишу для выхода!");//выводим сообщение 
     _getch();//нажимаем любую клавишу
     exit(0);//выходим из программы
     }
}

PM MAIL   Вверх
bsa
Дата 2.2.2014, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Kingl, с чего ты взял, что надо извлекать из стека? Просто посчитай все числа в стеке. Затем удали все равные наиболее частому. Для этого преобразовывать в строку и извлекать не надо.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0533 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.