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

Стек (односвязный список)

16.10.2011, 16:56. Показов 18552. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно реализовать операции работы со стеком(продвижение, вставка, удаление), хочется понять реализацию продвижения, а вставку и удаление сам напишу

Добавлено через 54 минуты
есть код
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
#ifndef STACK_H
#define STACK_H
#include "list"
template<class STACKTYPE>
class STACK: private List<STACKTYPE> {
public:
    void push (const STACKTYPE &d) { insertAtfront(d);}
    int pop (STACKTYPE &d) {return removefromfront(d);}
    int IsStackEmpty() const {return IsEmpty();}
    void PrintStack() const {print();}
};
#endif
 
#include <iostream>
#include "stack"
using namespace std;
 
int main() {
    Stack<int> intStack;
    int popInteger;
    for (int i=0; i<4; i++){
        intStack.push(i);
        intStack.print();
    }
    while (!intStack.isStackEmpty()){
        intStack.pop(popInteger);
        cout<<popInteger<<endl;
        intStack.printstack();
 
    }
    return 0;
}
взял его из учебника, но он не работает
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.10.2011, 16:56
Ответы с готовыми решениями:

Односвязный, двусвязный список, стек, очередь
В общем, всем кто нуждается. Баггов вы не найдете. Односвязный список #include &lt;iostream&gt; #include &lt;windows.h&gt; ...

Односвязный список. Вычислить логическое выражение используя стек
Форум,прошу помощи.Задание такое: Дан текстовый файл. Используя стек, вычислить значение логического выражения, записанного в...

Классы в С++, односвязный стек
Здравствуйте! У меня возникла проблема с этой программой: // ConsoleApplication6.cpp: определяет точку входа для консольного приложения. ...

3
 Аватар для Gepar
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
16.10.2011, 17:16
У Страуструпа в первых главах рассматривается создание "своего" стека, можете почитать если интересно.

Цитата Сообщение от KaTaLoNeC Посмотреть сообщение
взял его из учебника, но он не работает
А это потому что не полностью взяли, вы же буквально только объявления взяли, реализацией там и не пахнет, да ещё и слепили всё в один файл.

Цитата Сообщение от KaTaLoNeC Посмотреть сообщение
хочется понять реализацию продвижения
А чего непонятного, и добавление и удаление элементов идёт с головы. По сути двигать ничего не надо при pop, нужно только указатель на голову менять чтобы он на сл. элемент указывал.
0
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
16.10.2011, 17:21
KaTaLoNeC, держи.
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
#include <iostream>
using namespace std;
 
template<class T>
class Stack {
   struct node {
       T d;
        node* next;
        node(void): next(NULL){}
   };
private:
    node*  ptr;
public:
    Stack(void): ptr(NULL){}
    ~Stack() {
        this->clear();
     }
 
    // добавление элемента по LIFO (последним зашёл, первым вышел)
    void  push(T d) {
        node* n = new node();
        n->next = ptr;
        n->d = d;
        ptr = n;
    }
    T&  top(void) { return ptr->d;  }
 
    // вытолкнуть элемент из верхушки стека
    void pop(void) {
          node* tmp = ptr;
          ptr = ptr->next;
          delete tmp;
          tmp = NULL;
    }
    bool empty(void) const { return (! ptr); }
 
    // удалить весь стек
    void clear(void) {
         node* tmp;
         while(ptr != NULL) {
               tmp = ptr;
               ptr = ptr->next;
               delete tmp;
               tmp = NULL;
          }
     }
};
 
int  main(void) {
   Stack<int> st;
   // заполняем стек
   for(int i = 100; i <= 200; st.push(i++));
 
   // выводим все элементы стека в консоль
   while(! st.empty()) {
        cout << st.top() << ", ";
        st.pop();
   }
   cin.get();
   return 0;
}
1
Заблокирован
16.10.2011, 17:42
Цитата Сообщение от KaTaLoNeC Посмотреть сообщение
Нужно реализовать операции работы со стеком(продвижение, вставка, удаление), хочется понять реализацию продвижения, а вставку и удаление сам напишу

Добавлено через 54 минуты
есть код
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
#ifndef STACK_H
#define STACK_H
#include "list"
template<class STACKTYPE>
class STACK: private List<STACKTYPE> {
public:
    void push (const STACKTYPE &d) { insertAtfront(d);}
    int pop (STACKTYPE &d) {return removefromfront(d);}
    int IsStackEmpty() const {return IsEmpty();}
    void PrintStack() const {print();}
};
#endif
 
#include <iostream>
#include "stack"
using namespace std;
 
int main() {
    Stack<int> intStack;
    int popInteger;
    for (int i=0; i<4; i++){
        intStack.push(i);
        intStack.print();
    }
    while (!intStack.isStackEmpty()){
        intStack.pop(popInteger);
        cout<<popInteger<<endl;
        intStack.printstack();
 
    }
    return 0;
}
взял его из учебника, но он не работает
Чтобы быть программистом, для начала следует вразумительно излагать свои мысли! Что значит "не работает"? Не компилируется?! Выдает ошибку во время выполнения?! Или же получается не тот результат, который ожидается?!

В вашем примере вообще не понятен смысл включаемого заголовочного файла "stack" после того, как вы уже определил стек.

А директивы

#ifndef STACK_H
#define STACK_H

вообще бессмысленны в вашем коде, так как до их присутствия в коде, ничего выше них в код не включается. Поэтому никак не может быть, что SGACK_H была в вашем коде определена.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.10.2011, 17:42
Помогаю со студенческими работами здесь

Сформировать список из 10 книг, используя динамическую структуру данных односвязный список
друзья спасайте Сформировать список из 10 книг, используя динамическую структуру данных односвязный список С++

Создать класс «Квартира», в котором список комнат реализовать как односвязный список
Добрый день,написал фот такой клас по заданию:Создать класс «Квартира», в котором список комнат реализовать как односвязный список....

Составить односвязный список на основе класса, объекты которого будут формировать этот список
Составить односвязный список на основе класса, объекты которого будут формировать этот список. В описание класса должны входить данные...

Односвязный список: заносить в новый список элементы исходного, которые больше заданного значения
Можете пожалуйста помочь в решении проблемы не. Не могу создать функцию которая будет с созданного заранее списка заносить в новый элементы...

Заменить массив структур на односвязный список, и на двусвязный список
Взять текст задания и заменить массив структур на односвязный список, и на двусвязный список using namespace std; class person { ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru