Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 19
1

Вывести значение заголовка стека в переменную

24.06.2013, 16:00. Показов 1410. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую!мне нужно просто вывести значение из головы стека в переменную,которую потом можно заносить в массивы и т.д. Дело ещё в том,что я пишу на чистом си и на линуксе(что впрочем нисколько не меняет сам язык),помогите пожалуйста!
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
#include <stdio.h>
#include <stdlib.h>
 
struct node
{
  int value;
  struct node *next;
};
 
void print(struct node *p)
{
  if(p == NULL) return;
  while((p->next) != NULL)
  {
    printf("%d ", p->value);
    p = p->next;
  }
  printf("\n");
}
 
struct node **push(struct node **p, int val)
{
  struct node *t;
  t = (struct node*)malloc(sizeof(struct node));
  t->next = *p;
  t->value = val;
  *p = t;
  return p;
}
 
struct node **pop(struct node **p)
{
  if(((*p)->next) == NULL)
  {
    printf("stack pust\n");
    *p = NULL;
    return p;
  }
  else
  {
  printf("pop...  %d\n", (*p)->value);
  *p = (*p)->next;
  return p;
  }
}
int main()
{  
  int i=0,j=0,t=-110;
int mass1[7]={12,13,14,-2,-4,15,-3},mass2[14];  
struct node *p;
  p = (struct node*)malloc(sizeof(struct node));
  p->next = NULL;
  p->value = c[];
  for(i = 0; i < 8; i++)
{
if(mass[i]>1)
{
push(&p,mass1[i]);    
print(p);
}
else
if((mass1[i]>-16||(mass1[i]<0))
{
mass[j]=mass1[i];
j++
buff=p;//проблема начинается здесь,сейчас здесь стоит указатель и программа выводит весь стек целиком
  print(buff);
pop(&p);
mass2[j]=t;
j++;
pop(&p);
mass2[j]=buff;
j++;
mass2[j]=t;
push(&p,t);
t--;
}
}
return 0;
 
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.06.2013, 16:00
Ответы с готовыми решениями:

Извлечь из стека первый (верхний) элемент и вывести его значение D, а также адрес P2 новой вершины стека
Дано указатель P1 на вершину непустого стека. Извлечь из стека первый (верхний) элемент и вывести...

Как задасть значение Textbox в переменную, а затем эту переменную вывести в другой форме
Приветствую Есть форма с полем, где есть значение, как значение этого поле перенести в переменную,...

Структура стек (: добавить элемент в стек, удалить элемент из стека, получить значение с вершины стека, размер стека...)
Всем привет,ребят помогите пожалуйста с лабой,вообще без понятия про стеки:( Может кто то...

Считать из стека верхний элемент и меняет значение переменной стека
Нужно определить макрос, который читает из стека верхний элемент и меняет значение переменной стека

6
...
1906 / 1326 / 965
Регистрация: 12.02.2013
Сообщений: 2,172
24.06.2013, 18:59 2
@craabpinguin, а задание вообще как звучит, а то у вас в main полная абракадабра?
0
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 19
24.06.2013, 19:08  [ТС] 3
если честно,то это часть преобразователя польской формы в тетрады и там достаточно сложный алгоритм,который проще нарисовать,чем объяснить.Проблемное место я обозначил,но если нужно то я могу попытаться объяснить в чём соль.

Добавлено через 5 минут
В принципе всё,что мне нужно это чтобы в buff посылалось значение первого элемента стека,а уж его можно и в массив запихнуть и прочие извращения сотворить.
0
...
1906 / 1326 / 965
Регистрация: 12.02.2013
Сообщений: 2,172
24.06.2013, 19:08 4
Цитата Сообщение от craabpinguin Посмотреть сообщение
мне нужно просто вывести значение из головы стека в переменную,которую потом можно заносить в массивы и т.д.
C
1
mass[j] = p->value;
Это и будет значение головы стека.
1
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 19
24.06.2013, 19:12  [ТС] 5
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
#include <stdio.h>
#include <stdlib.h>
 
struct node
{
  int value;
  struct node *next;
};
 
void print(struct node *p)
{
  if(p == NULL) return;
  while((p->next) != NULL)
  {
    printf("%d ", p->value);
    p = p->next;
  }
  printf("\n");
}
 
struct node **push(struct node **p, int val)
{
  struct node *t;
  t = (struct node*)malloc(sizeof(struct node));
  t->next = *p;
  t->value = val;
  *p = t;
  return p;
}
 
struct node **pop(struct node **p)
{
  if(((*p)->next) == NULL)
  {
    printf("stack pust\n");
    *p = NULL;
    return p;
  }
  else
  {
  printf("pop...  %d\n", (*p)->value);
  *p = (*p)->next;
  return p;
  }
}
int main()
{  
  int i=0,j=0,t=-110;
int mass1[7]={12,13,14,-2,-4,15,-3};  
struct node *p;
  p = (struct node*)malloc(sizeof(struct node));
  p->next = NULL;
  p->value = c[];
  for(i = 0; i < 8; i++)
{
if(mass[i]>1)
{
push(&p,mass1[i]);    
print(p);
}
else
if((mass1[i]>-16 & (mass1[i]<0))
{
buff=p;//сейчас здесь стоит указатель и программа выводит весь стек целиком
  print(buff);
 
}
return 0;
 
}
даже лучше вот так,чтобы не утруждать вас копанием в излишнем коде

Добавлено через 41 секунду
секунду,проверю
0
...
1906 / 1326 / 965
Регистрация: 12.02.2013
Сообщений: 2,172
24.06.2013, 19:17 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Я правильно понял?
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
int main()
{
   int i = 0;
   int mass1[7] = {12, 13, 14, -2, -4, 15, -3};
   struct node* p = NULL;
   int buff;
 
   for (i = 0; i < 7; i++)
   {
      if (mass1[i] > 1)
      {
         push(&p, mass1[i]);
         print(p);
      }
      else if ((mass1[i] > -16) && (mass1[i] < 0))
      {
         if (p)
         {
            buff = p->value;
            printf("%d\n", buff);
         }
      }
   }
   return 0;
}
Вывести значение заголовка стека в переменную
0
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 19
24.06.2013, 19:18  [ТС] 7
спасибо!заработало!блин а почему в переменную он не хочет записовать это выражние?ну да ладно,как-нибудь обойдусь и без этого,ОГРОМНОЕ СПАСИБО!

Добавлено через 56 секунд
да,правильно,но почему-то,у меня такой вариант не работает,а работает только вариант с массивом
0
24.06.2013, 19:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.06.2013, 19:18
Помогаю со студенческими работами здесь

Как вывести значение требуемой переменную?
print (&quot;Введите значение&quot;) a = int(input()) b = int(input()) c = a,b = b,a print (&quot;Какую...

Стек: Переместить все элементы из первого стека во второй и вывести адрес новой вершины стека
Даны указатели P1 и P2 на вершины двух непустых стеков. Переместить все элементы из первого стека...

Дан указатель P1 на вершину стека (если стек пуст, то P1 = nil). Извлечь из стека все элементы и вывести их значения
Динамические структуры данных Все числа, используемые в заданиях на динамические структуры...

Опубликовать переменную окружения из HTTP-заголовка
Доброго времени суток. Прошу помощи в следующем: Есть расшифровщик траффика, который передает...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru