Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для Owen04
5 / 5 / 10
Регистрация: 25.12.2009
Сообщений: 144

СТЕК. Запись последующего элемента.

25.04.2011, 16:26. Показов 1278. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вводим стек (top), если элемент стека больше а, то этот элимент запишим в новый стек(top2)

Вродь пустяк, но не могу врубиться, первый элемен который >a записывает, а как взять "top2->next=" понять не могу(((

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
#include <conio.h>
#include <iostream.h>
 
struct node
{
 float num;
 node* next;
} ;
 
 
node* push(node* , float);
void printstack(node* );
node* pop(node*);
 
void main()
{  clrscr ();
   float what;
   int n,i,a;
   node* top=0;
   node* top2=0;
   cout<<"input n= ";
   cin>>n;
   cout<<endl;
   cout<<"input a= ";
   cin>>a;
   cout<<endl;
   //input in stek
   cout<<"input what"<< n<<"value\n";
   for (i=1;i<=n;i++)
   {
     cin>>what;
     top= push(top, what);
   }
 
     //print stek
  printstack(top);
  top2=new node;
 
 
 
   //output from stek
   while(top)
   {
     if (top->num >a)
    top2->num=top->num;
       // top2->next=
        top=pop(top);
   }
    printstack(top2);
   getch();
}
 
node* push(node* top, float what)
{
  node* pv=new node;
  pv->num=what;
  pv->next=top;
  return pv;
}
 
void printstack(node* top)
{
  float what;
 
  cout<<"stek:\n";
  while (top)
  {
    cout<<top->num<<" ";
    top=top->next;
  }
  cout<<endl;
 }
 
 node* pop(node* top)
 {
   node* pv=top->next;
   delete top;
   return pv;
 }
Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
while(top)
   {
     if (top->num >a)
        top2->num=top->num;
       // top2->next=
        top=pop(top);
   }
Вот тут нужна помощь)

Добавлено через 1 час 47 минут
когда беру next->0 то выводит только один элемент >a((
C++
1
2
3
4
5
6
7
while(top)
   {
     if (top->num >a)
        top2->num=top->num;
       top2->next=0;
        top=pop(top);
   }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.04.2011, 16:26
Ответы с готовыми решениями:

Запись в стек
С С++ я не особо дружу, но нужно для лабы реализовать запись данных в стек именно на нем (( Насколько я помню push заталкивает данные...

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

Запись функции в файл для ее последующего вызова
Доброе время суток. Столкнулся со следующей проблемой: необходимо посчитать на огромном количестве точек значение функцией задаваемой...

5
 Аватар для Owen04
5 / 5 / 10
Регистрация: 25.12.2009
Сообщений: 144
26.04.2011, 18:10  [ТС]
Что и примерно никто подсказать не может??? =((
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
26.04.2011, 18:12
Цитата Сообщение от Owen04 Посмотреть сообщение
Что и примерно никто подсказать не может???
так ни черта же непонятно, что Вы хотите сделать.
1
 Аватар для Owen04
5 / 5 / 10
Регистрация: 25.12.2009
Сообщений: 144
26.04.2011, 19:05  [ТС]
стек разбить на два стека!

в один числа больше "a", допустим 4, в другой остальные!

Добавлено через 4 минуты
Примерно так должно получиться:

введите n = 4;

введите а=4;

заполним стек
1 5 6 3
получаеться стек
3 6 5 1

в первый стек пойдёт 6 и 5
во второй 3 и 1.
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
26.04.2011, 21:24
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include <stdio.h>
#include <stdlib.h>
 
/* STRUCT stack_node
 * node of stack includes value and 
 * address to previous node
*/
struct stack_node {
    int value;
    struct stack_node *prev;
};
 
struct stack_node * stack_node_new(struct stack_node * prev, int value) {
    struct stack_node *node = (struct stack_node *) malloc(sizeof(struct stack_node));
    node->value = value;
    node->prev = prev;
}
 
/* STRUCT stack
 * stack includes pointer to stack's top
*/
struct stack {
    struct stack_node *top;
};
 
size_t stack_size(struct stack *s) {
    size_t current_size = 0;
    struct stack_node * node;
 
    for (node = s->top; node != NULL; node = node->prev) {
        ++current_size;;
    }
 
    return current_size;
}
 
int stack_empty(struct stack *s) {
    return s->top == NULL;
}
 
void stack_push(struct stack *s, int value) {
    s->top = stack_node_new(s->top, value);
}
 
void stack_pop(struct stack *s) {
    struct stack_node * removed;
    if (!stack_empty(s)) {
        removed = s->top;
        s->top = s->top->prev;
    }
}
 
int stack_top(struct stack *s) {
    if (!stack_empty(s)) 
        return s->top->value;
    else
        return 0;
}
 
struct stack * stack_create() {
    struct stack * stack = (struct stack *)malloc(sizeof(struct stack));
    stack->top = NULL;
    return stack;
}
 
void stack_destroy(struct stack *s) {
    while (!stack_empty(s)) 
        stack_pop(s);
 
    free (s);
}
 
int main() {
    struct stack * s0 = stack_create();
    struct stack * s1 = stack_create();
    struct stack * s2 = stack_create();
    int i, a, n;
 
    printf("Введите a: ");
    scanf ("%d", &a);
 
    printf("Введите n: ");
    scanf ("%d", &n);
 
    while (n--) {
        printf("> ");
        scanf ("%d", &i);
 
        stack_push(s0, i);
    }
 
    while (!stack_empty(s0)) {
        if (stack_top(s0) > a)
            stack_push(s1, stack_top(s0));
        else
            stack_push(s2, stack_top(s0));
 
        stack_pop(s0);
    }
 
    while (!stack_empty(s1)) {
        printf ("%d ", stack_top(s1));
        stack_pop(s1);
    }
 
    printf ("\n");
 
    while (!stack_empty(s2)) {
        printf ("%d ", stack_top(s2));
        stack_pop(s2);
    }
 
    stack_destroy(s0);
    stack_destroy(s1);
    stack_destroy(s2);
 
    return 0;
}
1
 Аватар для Owen04
5 / 5 / 10
Регистрация: 25.12.2009
Сообщений: 144
26.04.2011, 22:42  [ТС]
спасиб) щас попробую)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.04.2011, 22:42
Помогаю со студенческими работами здесь

Запись в поле формы разницы предыдущего и последующего значения
В таблице набрана цифровая информация о деятельности предприятия за каждый день. Некоторые данные идут с нарастанием. Как в форме создать...

Выделение памяти для каждого последующего элемента массива
Нужно чтобы в функции qqqq выделялась память для следующего элемента массива и нужно в него сохранить символ прочитанный из файла Нужно...

Заменить каждый элемент массива на сумму предыдущего и последующего элемента
Дан массив размера N. Заменить каждый элемент(кроме крайних) массива на сумму предыдущего и последующего элемента. Без вспомогательного...

Описание сложного элемента интерфейса для последующего его использования
Как в андроид описать сложный элемент интерфейса, состоящий например из ImageView, нескольких TextView и Button, и обернутых в GridLayout....

Последовательность. Вычислить сколько элементов больше в 2 раза последующего за ним элемента
Дана последовательность натуральных чисел, за которой следует 0 (0 – признак конца последовательности). Вычислить сколько эле-ментов данной...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru