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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2014, 04:01   #1
Kingl
 
Регистрация: 30.11.2013
Сообщений: 5
Восклицание Однонаправленные списки (стэк)

Написать программу по созданию, просмотру, добавлению и решению поставленной задачи для однонаправленного линейного списка (стек и/или очередь).
Создать список из случайных целых чисел в диапазоне от 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);//выходим из программы
	 }
}
Kingl вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++, однонаправленные списки Alendorff Помощь студентам 15 08.04.2013 12:48
Однонаправленные списки kulpin Общие вопросы C/C++ 0 04.03.2013 00:13
Однонаправленные списки Bakasova Паскаль, Turbo Pascal, PascalABC.NET 7 18.12.2012 14:11
Однонаправленные списки. tema654 Общие вопросы C/C++ 3 29.12.2011 14:49
Однонаправленные списки Цветик Общие вопросы C/C++ 3 22.11.2010 15:09