Выполните домашнее задание по курсу структур данных, запишите его.
Программное обеспечение для компиляции: Dev-C++
Первый: втолкнуть в стек, вытолкнуть из стека
Код реализации:
#include<stdio.h>
typedef struct
{ int x[10]; внутренний верх; }куча;
void initstack(stack *s)
{ s->top==-1; } int empty(stack *s) { if (s->top==-1) return 1; иначе вернуть 0; } int full(stack *s) { if (s->top==10-1) return 1; иначе вернуть 0; } pushstack(stack *s,int b) { if(full(s)) { ("栈满了\n"); вернуть 0; } с->верх++; s->x[s->top]=b; } int popstack(stack *s) { if (пусто(s)) {printf("该栈为空,不需要出栈\n");} int t;t=s->x[s->top] ; с->верх--; вернуть т; }
int main()
{stack S;
int a,i;
initstack(&S);
printf("Пожалуйста, введите элемент стека:\n");
for(i=0;i<7;i++)
{ scanf("%d " ,&a); pushstack(&S,a);} for(i=0;i<7;i++) printf("Элементом всплывающего окна является %d\n",popstack(&S)); return 0; }
результат операции:
Второе: отображать верхний элемент стека
Код реализации:
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct linknode
{ int data; struct linknode *следующий; }узел;
typedef struct
{
struct linknode *top;
}куча;
void init(stack *k)
{ k->top=NULL; } void push(stack *k,int x) { node *s=(node *)malloc(sizeof(node)); с->данные=х; s->следующий=k->верхний; к->верх=с; } int pop(stack *k) { if(k->top!=NULL) { node *q; д=к->верх; интервал x=q->данные; k->top=q->следующий; бесплатно (к); вернуть х; } } int get(stack *k) { if(k->top!=NULL) return k->top->data; } int main() { стек s1,*t; в а, я;
t=&s1;
init(t);
printf("Пожалуйста, введите элемент стека:\n");
for(i=0;i<9;i++)
{ scanf("%d",&a); push(t, a); } pop(t); printf("Верхний элемент стека: %d\n", get(t)); return 0; }
результат операции: