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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.60
Lana777
0 / 0 / 0
Регистрация: 30.05.2010
Сообщений: 7
#1

Стек и очередь - C++

30.05.2010, 21:28. Просмотров 2825. Ответов 6
Метки нет (Все метки)

Прошу помочь в решении задачи, я новичек!!!
Мне необходимо создать стек и очередь на C++(Microsoft Visiual C++ 6.0)
Буду очень благодарна за помощь!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2010, 21:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Стек и очередь (C++):

стек и очередь - C++
ребят поделитесь плиз программами реализующими на си стек и очередь (хотябы ввод вывод данных)

Стек и очередь - C++
Задание 1. Реализовать программу, выполняющую стандартный набор операций со стеком на основе массива: • проверку пустоты стека ...

стек и очередь - C++
Обращаюсь с просьбой помочь с задачами...Есть задача,готовая,ее нужно сделать через СТЕК и ОЧЕРЕДЬ!Пожалуйста!) Составить программу, в...

Очередь и стек - C++
Система состоит из трех процессоров P1, P2, P3, очереди F, стека S и распределителя задач R. В систему поступают запросы на выполнение...

стек и очередь - C++
Задание такое: создать список из целых чисел. Удалить лишние элементы в списке так, чтобы в результирующем списке каждый элемент был не...

Стек и очередь - C++
Создать класс поезд, состоящий из класса остановки. Класс поезд: номер поезда, пункт назначения, время отправления. Класс остановки :...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Qwerty_coder
29 / 29 / 2
Регистрация: 14.12.2009
Сообщений: 79
30.05.2010, 21:38 #2
Lana777, писал вчера для одного парня с этого форума - программа содержит в себе базовые функции по работе со стеком

стек:

C++
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
96
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <math.h>
 
using namespace std;
 
struct Stack //объявление структутры стека
{
        int info; //информационная часть элемента, например int
        Stack *next; //адресная часть - указатель на следующий элемент
} *begin, *t; //указатель вершины стека (*begin), временный (*t)
 
Stack* InStack(Stack*, int); //функция формирования элемента стека
void View(Stack*); //функция просмотра стека
void Delete(Stack**); //функция освобождения памяти, занятой стеком
int rand(void); //рандом
 
Stack* InStack(Stack *p, int in)
{
        Stack *t = new Stack; //Захватываем память для элемента
        t->info = in; //формируем информационную часть
        t->next = p; //формируем адресную часть
        return t;
}
 
void View(Stack *p)
{
        Stack *t = p; //устанавливаем текущий указатель на начало списка
        while(t != NULL) //начинаем цикл, работающий до тех пор, пока указатель t не равен NULL (признак окончания списка)
        {
                cout << " " << t->info << endl; //вывод на экран информационной части
                t = t->next; //текущий указатель переставляем на следующий элемент
        }
}
 
void Delete(Stack **p)
{
        while(*p != NULL)
        {
                t = *p;
                *p = (*p)->next;
                delete t;
        }
}
 
void main()
{
        int i, in, n, kod;
        while(true)
        {
                cout << "\n\tCreate - 1.\n\tAdd - 2.\n\tView - 3.\n\tDelete - 4.\n\tEXIT - 0. : ";
                cin >> kod;
                switch(kod)
                {
                case 1: case 2:
                        if (kod == 1 && begin != NULL)
                        {
                                //Если создаем новый стек, должны освободить память, занятую предыдущим
                                cout << "Clear memory!" << endl;
                                break;
                        }
                        cout << "Input kol = ";
                        cin >> n;
                        for (i = 1; i <= n; i++)
                        {
                                in = rand();
                                begin = InStack(begin, in); //добавление нового элемента в стек, вершиной которого является указатель begin
                        }
                        if (kod == 1) cout << "Create " << n << endl;
                        else cout << "Add " << n << endl;
                        break;
 
                case 3:
                        if (!begin)
                        {
                                cout << "Stack pust!" << endl;
                                break;
                        }
                        cout << "---Stack---" << endl;
                        View(begin);
                        break;
                
                case 4:
                        Delete(&begin); //после выполнения функции указатель на вершину будет равен NULL
                        cout << "Memory free!" << endl;
                        break;
 
                case 0:
                        if (begin != NULL)
                                Delete(&begin);
                        return;
 
                }
        }
}
1
Lana777
0 / 0 / 0
Регистрация: 30.05.2010
Сообщений: 7
30.05.2010, 21:55  [ТС] #3
Спасибо огромное
Еще отдельное спасибо за пояснения)

Добавлено через 10 минут
А как создать очередь, не подскажете?
0
Qwerty_coder
29 / 29 / 2
Регистрация: 14.12.2009
Сообщений: 79
30.05.2010, 22:01 #4
Lana777, очередь сама по себе - это линейный список, в котором извлечение данных происходит из начала, а добавление - в конец.

То есть, ее структура будет таковой:

C++
1
2
3
4
5
struct Queue
{
   int info; //информационная часть элемента
   Queue *next, *prev; //адресная часть - указатель на следующий и предыдущий элемент
} *begin, *end; //указатели на начало и конец
осталось только функции некоторые переписать...
1
Lana777
0 / 0 / 0
Регистрация: 30.05.2010
Сообщений: 7
30.05.2010, 22:06  [ТС] #5
Т.е взять простейшие функции стека и переделать их под струтуру очередь??? или как??
0
Qwerty_coder
29 / 29 / 2
Регистрация: 14.12.2009
Сообщений: 79
30.05.2010, 22:20 #6
Lana777, возьмите и перепишите функции добавления и просмотра... Ну или пишите их с нуля
0
Syndarin
13 / 13 / 1
Регистрация: 15.09.2009
Сообщений: 57
31.05.2010, 00:31 #7
Вот здесь Написать программу формирования очереди делал хлопцу лабу по очередям. Там описаны функции создания и вывода на экран
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2010, 00:31
Привет! Вот еще темы с ответами:

Список, стек и очередь. - C++
Файл содержит вещественные числа. Нужно удвоит вхождение всех чисел N. Решить с помощью стека, списка и очереди в С++. Вся информация...

Очередь(а выходит стек) - C++
Помогите пожалуйста разобраться:собственно задача из все того же Лафоре.. Вот ее рабочее решение(гл 7 упр. 9) #include &lt;iostream&gt; ...

Стек, очередь (линейные списки) - C++
Привет! Мне нужно поместить четные элементы стека в динамический массив, затем вывести содержимое этого массива и поместить элементы стека...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
31.05.2010, 00:31
Ответ Создать тему
Опции темы

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