Вывести значение заголовка стека в переменную - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Приветствую!мне нужно просто вывести значение из головы стека в переменную,которую потом можно заносить в массивы и т.д. Дело ещё в том,что я пишу на чистом си и на линуксе(что впрочем нисколько не меняет сам язык),помогите пожалуйста!
#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;
 
}

Решение задачи: «Вывести значение заголовка стека в переменную»

textual
Листинг программы
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;
}

Объяснение кода листинга программы

В данном коде рекурсивная функция push добавляет новый узел в стек, а функция print выводит значение стека. В основной функции main создаётся пустой стек p и заполняется массивом mass1. Затем в цикле проверяется каждый элемент массива. Если значение больше 1, то оно добавляется в стек и выводится на экран. Если значение находится в диапазоне от -16 до 0, то из стека достаётся значение и выводится на экран. Возвращаемое значение 0 говорит о успешном завершении программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5
Похожие ответы