Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
1 / 1 / 0
Регистрация: 08.09.2012
Сообщений: 42

стек в ручную

28.11.2012, 17:14. Показов 5262. Ответов 17

Студворк — интернет-сервис помощи студентам
Помогите создать стек в ручную чтобы работали функции добавление элемента и удаление! ( желательно стек из 4 элементов итегер, и цифры в них от 0 до 50 )
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.11.2012, 17:14
Ответы с готовыми решениями:

БД - счетчик в ручную
Не подскажите, как сделать счетчик в таблице вручную?

Перенос WP в ручную
Здраствуйте. Предположим приходится переноаить вордпресс на другой хост(а возможно и домен) в ручную. тоесть в ручную выдрал фаил и...

Поднятие сайта "в-ручную"
Вот, читала про музыкальных пиратов и попалось по пути : (весь текст про переход муз-биза с СД в интернет тут)

17
13 / 13 / 0
Регистрация: 17.05.2012
Сообщений: 80
28.11.2012, 17:22
в STL все есть
0
9 / 9 / 7
Регистрация: 23.11.2012
Сообщений: 94
28.11.2012, 17:37
вот пример класса реализующий стек. Надеюсь вам поможет.

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
#include <iostream>
using namespace std;
////////////////////////////
class Stack
{
 private:
  enum { MAX = 4 };
  int st [ MAX ];
  int top;
 
 public:
  Stack ( ):
 { top = 0; }
  
  void push ( int var ) // поместить в стек
   { st [ ++top ] = var; }
  
  int pop ( ) //взять из стека
   { return st [ top--]; }
};
/////////////////////////////////////
 int main()
 {
   Stack s1;
   s1.push ( 10 );
   s1.push ( 15 );
   s1.push ( 20 );
   s1.push ( 23 );
   s1.push ( 49 );
   
   cout << " 1: " << s1.pop( ) << endl;
   cout << " 2: " << s1.pop( ) << endl; 
   cout << " 3: " << s1.pop( ) << endl;
   cout << " 4: " << s1.pop( ) << endl;
   cout << " 5: " << s1.pop( ) << endl;
   system("PAUSE");
   return 0;
 }
1
1 / 1 / 0
Регистрация: 08.09.2012
Сообщений: 42
29.11.2012, 11:29  [ТС]
Цитата Сообщение от mmd Посмотреть сообщение
в STL все есть
А мне кок раз надо реализовать стек не используя STL!

Добавлено через 1 минуту
Цитата Сообщение от fuzzytoozy Посмотреть сообщение
вот пример класса реализующий стек. Надеюсь вам поможет.

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
#include <iostream>
using namespace std;
////////////////////////////
class Stack
{
 private:
  enum { MAX = 4 };
  int st [ MAX ];
  int top;
 
 public:
  Stack ( ):      <<<<------- где то тут ругается!
 { top = 0; }
  
  void push ( int var ) // поместить в стек
   { st [ ++top ] = var; }
  
  int pop ( ) //взять из стека
   { return st [ top--]; }
};
/////////////////////////////////////
 int main()
 {
   Stack s1;
   s1.push ( 10 );
   s1.push ( 15 );
   s1.push ( 20 );
   s1.push ( 23 );
   s1.push ( 49 );
   
   cout << " 1: " << s1.pop( ) << endl;
   cout << " 2: " << s1.pop( ) << endl; 
   cout << " 3: " << s1.pop( ) << endl;
   cout << " 4: " << s1.pop( ) << endl;
   cout << " 5: " << s1.pop( ) << endl;
   system("PAUSE");
   return 0;
 }
Хороший код только в чём то ошибка
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
29.11.2012, 11:44
Двоеточие уберите.
вот результат работы кода:
Миниатюры
стек в ручную  
1
9 / 9 / 7
Регистрация: 23.11.2012
Сообщений: 94
30.11.2012, 18:22
извиняюсь, вот рабочий. Сам проверял. =)
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
#include <iostream>
using namespace std;
////////////////////////////
class Stack
{
 private:
  enum { MAX = 5 };
  int st [ MAX ];
  int top;
 
 public:
  Stack ( ): top(0)
 {  }
 
  void push ( int var )
   {
   st [ ++top ] = var;
    }
 
  int pop ( )
   {
   return st [ top-- ]; }
};
/////////////////////////////////////
 int main()
 {
   Stack s1;
   s1.push ( 10 );
   s1.push ( 15 );
   s1.push ( 20 );
   s1.push ( 9 );
 
   cout << " 1: " << s1.pop( ) << endl;
   cout << " 2: " << s1.pop( ) << endl;
   cout << " 3: " << s1.pop( ) << endl;
   cout << " 4: " << s1.pop( ) << endl;
   system("PAUSE");
   return 0;
 }
1
1 / 1 / 0
Регистрация: 08.09.2012
Сообщений: 42
04.12.2012, 11:44  [ТС]
Спасибо всё работает отлично! А можете сказать что означает строка в классе enum { MAX = 5 }; ?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
04.12.2012, 11:54
Цитата Сообщение от ugodaj Посмотреть сообщение
А можете сказать что означает строка в классе enum { MAX = 5 }; ?
http://www.cyberguru.ru/cpp/cp... age26.html
1
1 / 1 / 0
Регистрация: 08.09.2012
Сообщений: 42
06.12.2012, 13:26  [ТС]
Слушайте мне как бы надо было ещё чтоб были функции добавления и удаления я нашёл вот такой отличный код, но вот незадача выдаёт ошибку, чего куда добавить или где изменить?
1 C:\Dev-Cpp\include\c++\3.4.2\backward\iostream. h:31, from C:\Documents and Settings\DmitrijsSav\Desktop\stek31.cpp In file included from C:/Dev-Cpp/include/c++/3.4.2/backward/iostream.h:31, from C:\Documents and Settings\DmitrijsSav\Desktop\stek31.cpp
32:2 C:\Dev-Cpp\include\c++\3.4.2\backward\backward_ warning.h #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
40 C:\Documents and Settings\DmitrijsSav\Desktop\stek31.cpp `main' must return `int'
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
#include <iostream.h>
 
/*НАША СТРУКТУРА*/
struct List
{
    int x; //информационный элемент
    List *Next,*Head; //Голова стека и указатель на следующий элемент
};
 
/*ФУНКЦИЯ ДОБАВЛЕНИЯ ЭЛЕМЕНТА В СТЕК  (в список LIFO)*/
void Add(int x, List **MyList) //Принимаем элемент и указатель на указатель на стек
{
    List *temp=new List; //Выделяем память для нового элемента
    temp->x=x; //Записываем в поле x принимаемый в функцию элемент x
    temp->Next=(*MyList)->Head; //Указываем, что следующий элемент это предыдущий
    (*MyList)->Head=temp; //Сдвигаем голову на позицию вперед
}
 
/*ФУНКЦИЯ ОТОБРАЖЕНИЯ СТЕКА*/
void Show(List *MyList) //Нужен только сам стек
{
    List *temp=new List; //Выделяем память под временный элемент
    temp=MyList->Head; //Указываем ему, что его позиция в голове стека
               //с помощью цикла проходим по всему стеку
    while (temp!=NULL)  //выходим при встрече с пустым полем
    {
        cout<<temp->x<<" "; //Выводим на экран элемент стека
        temp=temp->Next; //Переходим к следующему элементу
    }
}
 
/*ФУНКЦИЯ УДАЛЕНИЯ СТЕКА ИЗ ПАМЯТИ*/
void ClearList(List *MyList)
{   
     while (MyList->Head!=NULL)  //Пока по адресу не пусто
     {   
        List *temp=MyList->Head->Next; //Временная переменная для хранения адреса следующего элемента
        delete MyList->Head; //Освобождаем адрес обозначающий начало
        MyList->Head=temp; //Меняем адрес на следующий
     }
}
 
void main()
{
    List *MyList=new List; //Выделяем память для стека
    MyList->Head=NULL; //Во избежание ошибок инициализируем первый элемент
 
    for (int i=0;i<10;i++) Add(i,&MyList); //Заносим данные в стек
    Show(MyList); //Выводим стек на экран
 
void ClearList(List *MyList); //Очищаем память.
   
}
0
9 / 9 / 7
Регистрация: 23.11.2012
Сообщений: 94
06.12.2012, 14:42
А можете сказать что означает строка в классе enum { MAX = 5 }; ?
данная строка позволяет инициализировать переменную в классе константным значением. Объявление const int = 5 не возможно сделать в классе, поэтому используется тип перечисления для определения переменной. Сделано это для того, чтобы не использовать глобальной переменной
0
1 / 1 / 0
Регистрация: 08.09.2012
Сообщений: 42
08.01.2013, 11:24  [ТС]
Никто не может помочь в чём ошибка?
0
25 / 25 / 11
Регистрация: 09.11.2012
Сообщений: 229
08.01.2013, 11:43
У меня есть реализация стека на псевдокоде, думаю не трудно будет перевести на c + +

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
function MAKENULL (STACK S)
      S.top = maxlenght+1
 
function EMPTY (STACK S) {
      if S.top > maxlenght
      then return true
      else return false
 
function TOP (STACK S)
      if EMPTY(S)
then error (“стек порожній”)
      else return S.elementtype[S.top]
}
 
function POP (STACK S)
      if EMPTY(S)
then error (“стек порожній”)
      else S.top = S.top + 1
}
 
function PUSH (elementtype x, STACK S)
      if S.top == 1
then error (“Стек повний”)
      else
            S.top = S.top1;
            S.elements[S.top] = x;
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
08.01.2013, 11:43
Цитата Сообщение от ugodaj Посмотреть сообщение
40 C:\Documents and Settings\DmitrijsSav\Desktop\stek31.cpp `main' must return `int'
C++
1
int main()//а не void main()
Остальное варнинги. Вам сообщают, что фаил iostream.h устарел
0
1 / 1 / 0
Регистрация: 08.09.2012
Сообщений: 42
08.01.2013, 12:12  [ТС]
спасибо

Добавлено через 4 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
int main()//а не void main()
Остальное варнинги. Вам сообщают, что фаил iostream.h устарел
Если я меняю на int main() то выдаёт такие ошибки:
1 C:\Dev-Cpp\include\c++\3.4.2\backward\iostream. h:31, from C:\Documents and Settings\DmitrijsSav\Desktop\nerabo4ij stek.cpp In file included from C:/Dev-Cpp/include/c++/3.4.2/backward/iostream.h:31, from C:\Documents and Settings\DmitrijsSav\Desktop\nerabo4ij stek.cpp
1 C:\Documents and Settings\DmitrijsSav\Desktop\nerabo4ij stek.cpp from C:\Documents and Settings\DmitrijsSav\Desktop\nerabo4ij stek.cpp
32:2 C:\Dev-Cpp\include\c++\3.4.2\backward\backward_ warning.h #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
08.01.2013, 12:17
C++
1
2
#include <iostream>
using namespace std;
можно
C++
1
#include <iostream>
и при обращении к данным из пространства std, обращаться к данному пространству имен:
C++
1
std::cout<<"ffffffffffffff";
0
1 / 1 / 0
Регистрация: 08.09.2012
Сообщений: 42
08.01.2013, 12:57  [ТС]
Спасибо всё работает )
0
1 / 1 / 0
Регистрация: 08.09.2012
Сообщений: 42
09.01.2013, 13:20  [ТС]
Слушайте тут возник ещё такой вопрос! Я не много переделал код как мне надо, ещё конечно много ошибок, но я вот на чём зацыклился: Вот код :
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
#include <iostream>
using namespace std;
int x;
struct List
{
    int x; 
    List *Next,*Head; 
};
 
int main(){
 
 
 
    char key;
    cout<<"Select the digit from menu:\n";
    cout<<"Press 1 for add digit in Steck";
    cout<<"Press 2 for delete digit from Steck";
    cout<<"Press 3 for show Steck";
    cin>>key;
    
    switch(key){
    case  '1':  
          [B]std::cin>>x;
          void Add(int x, List **MyList); 
               {
                List *temp=new List; 
                temp->x=x; 
                temp->Next=(*MyList)->Head; 
                (*MyList)->Head=temp; 
                }   [/B]
          break; 
    case  '2':     
          void ClearList(List *MyList)
               {   
               while (MyList->Head!=NULL)  
                     {   
                     List *temp=MyList->Head->Next; 
                     delete MyList->Head; 
                     MyList->Head=temp; 
                     }
               }
          break;
    case  '3':   
          void Show(List *MyList) 
               {
               List *temp=new List; 
               temp=MyList->Head; 
               while (temp!=NULL) 
                     {
                      std::cout<< temp->x<<" "; 
                      temp=temp->Next; 
                     }
               } 
          break; 
          default:   
          cout<<"\nError!!! This operator isn't correct\n";
          break;
 
void funkcion()
     {
    List *MyList=new List;
    MyList->Head=NULL; 
    for (int i=0;i<4;i++) Add(i,&MyList);
    Show(MyList); 
    void ClearList(List *MyList); 
    }
 return 0;   
             }
}
void funkcion()
     {
    List *MyList=new List;
    MyList->Head=NULL; 
    for (int i=0;i<4;i++) Add(i,&MyList);
    Show(MyList); 
    void ClearList(List *MyList); 
    }
с 24 по 30 строку и он там говорит что MyList undercleared что изменить чтоб он видел MyList как в функции переменную и нечего не требовал от меня ?

Добавлено через 19 минут
Во я чуток переделал но всёравно выдёт там же ту же ошибку
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
#include <iostream>
using namespace std;
int x;
struct List
{
    int x; 
    List *Next,*Head; 
};
  void Add(int x, List **MyList);
  void ClearList(List *MyList);
  void Show(List *MyList);
int main()
       {{
    List *MyList=new List;
    MyList->Head=NULL; 
    for (int i=0;i<4;i++) Add(i,&MyList);
    Show(MyList); 
    void ClearList(List *MyList); 
    }
 return 0;   
             }
void vibor()
{
 
 
 
    char key;
    cout<<"Select the digit from menu:\n";
    cout<<"Press 1 for add digit in Steck\n";
    cout<<"Press 2 for delete digit from Steck\n";
    cout<<"Press 3 for show Steck\n";
    cin>>key;
    
    switch(key){
    case  '1':  
          std::cin>>x;
        
               {
                List *temp=new List; 
                temp->x=x; 
                temp->Next=(*MyList)->Head; 
                (*MyList)->Head=temp; 
                } 
          break; 
    case  '2':     
          
               {   
               while (MyList->Head!=NULL)  
                     {   
                     List *temp=MyList->Head->Next; 
                     delete MyList->Head; 
                     MyList->Head=temp; 
                     }
               }
          break;
    case  '3':   
           
               {
               List *temp=new List; 
               temp=MyList->Head; 
               while (temp!=NULL) 
                     {
                      std::cout<< temp->x<<" "; 
                      temp=temp->Next; 
                     }
               } 
          break; 
          default:   
          cout<<"\nError!!! This operator isn't correct\n";
          break;
 
 
 
}}
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
09.01.2013, 14:23
MyList - локальная переменная для main
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.01.2013, 14:23
Помогаю со студенческими работами здесь

Ввод матрици в ручную.
Ребят помогите плиз разобратся, чет ваще не понятное происходит. Хотел ввести матрицу вручную по строкам. writeln('введите матрицу:');...

Подключение к интернету в ручную
Добрый день... Помогите пожалуйста подключится к интернету с компа, по кабелю через роутер ... Сам комп не мой (у товарища) и у него...

Списки автоматические и в ручную
есть ли смысл понимать как создавать списки в ручную,если это уже автоматизировано с помощью библиотеки list. ведь функции по созданию в...

Как чистить реестр в ручную?
Как то давно сказали мне что надо чистить реестр, я залез и всё вырезано удалил. После этого только утилитами пользуюсь!

Изменение размера Label в ручную
Как изменить размер Label вручную?


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru