Вывести значение заголовка стека в переменную - 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 говорит о успешном завершении программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д