powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Однонаправленные списки (стэк)
8 сообщений из 8, страница 1 из 1
Однонаправленные списки (стэк)
    #38546228
Kingl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написать программу по созданию, просмотру, добавлению и решению поставленной задачи для однонаправленного линейного списка (стек и/или очередь).
Создать список из случайных целых чисел в диапазоне от 1 до 10, определить наиболее часто встречающееся число и удалить его.

Как я понимаю после того как я ввел числа в стэк, мне их надо от туда извлечь, записать в строку, там удалить числа которые чаще всего повторяются и потом опять уже новую эту строку записать в стэк обратно??? Если так то подскажите как из стека преобразовать в строку, ну или может есть еще какие-то варианты?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
#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);//выходим из программы
	 }
}
...
Рейтинг: 0 / 0
Однонаправленные списки (стэк)
    #38546231
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kingl,

Код: plaintext
1.
2.
3.
4.
5.
void exit()//функция выхода
{
   ...
   exit(0);//выходим из программы
}


Давно так не ржал. Вы изобрели первый в мире рекурсивный выход из программы в подпространство :)
(если компилировать как С, а не С++ конечно)

ЗЫ. По самому заданию - извините сейчас нет настроения разбираться, может позже.
...
Рейтинг: 0 / 0
Однонаправленные списки (стэк)
    #38546264
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kingl,

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

ты имеешь в виду алгоритм или постановку задачи?

если алгоритм, то текут все зависит от того как написан сам стек.
если это чистый стек, то в него можно тонко push и pop. но обычно так не делают, обычно кроме этого есть еше и возможность просто побегать по списку.

Если так то подскажите как из стека преобразовать в строку, ну или может есть еще какие-то варианты?

я бы тебе предложил сначала генерировать числа и пихать в стек. потом вынимать из стека, обрабатывать и класть в другой стек. потом следующий этап обработки, и так далее.
...
Рейтинг: 0 / 0
Однонаправленные списки (стэк)
    #38546347
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KinglКак я понимаю после того как я ввел числа в стэк, мне их надо от туда извлечь,
записать в строку, там удалить числа которые чаще всего повторяются и потом опять уже
новую эту строку записать в стэк обратно???
Нет, это бред.

Тебе надо:

1) Добавить в структуру вспомогательное поле числа повторов
2) Пройти по списку и для каждого элемента посчиать число его повторов в списк (тут будет
вложенный цикл).
3) Ещё раз пройти по списку и найти максимальное число повторов.
4) Третий раз пройти по списку, удаляя из него элементы с этим максимальным числом повторов.

Всё.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Однонаправленные списки (стэк)
    #38546466
Kingl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
Информация полезна. Было бы очень хорошо, если бы каждый пункт, еще пример кода написать, не обязательно с моими данными.
...
Рейтинг: 0 / 0
Однонаправленные списки (стэк)
    #38546489
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KinglБыло бы очень хорошо
Нет, это было бы уж слишком жирно. Такие примеры кода наверняка есть в Ваших конспектах.
Вы ведь писали конспекты на лекциях, не так ли?.. Вы ведь ходили на лекции?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Однонаправленные списки (стэк)
    #38546497
Kingl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, Конечно ходил, но Вы должны понимать, это заочное образование, дали только так сказать основы, как создать стек, как добавить элементы, как просмотреть стек, а всякие такие алгоритмы выборки, замены элементов и все остальное сказали ищите в интернете, догадывайтесь сами, читайте книги, два дня уже я этим занимаюсь. Может скинуть конспект лекций, что бы посмотреть что нам дали на занятиях?(
...
Рейтинг: 0 / 0
Однонаправленные списки (стэк)
    #38547259
Фотография Feg16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KinglКонечно ходил ... должны понимать это заочное образованиеНаверное надо было идти на дневное на полные 5 лет курса. Иначе смысл Нам понимать что Вам неохота понимать? :)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Однонаправленные списки (стэк)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]