奔跑的人生 的学生作业:
stack.h
//
// Created by yanbo.zhang on 2025-02-25.
//
#ifndef _STACK_H
#define _STACK_H
#include
#include
#include
#define MAX 12
typedef char datatype_t;
typedef struct {
datatype_t buf[MAX];
int top;
} seqstack_t;
extern seqstack_t *create_empty_seqstack();
extern int is_empty_seqstack(seqstack_t *s);
extern int is_full_seqstack(seqstack_t *s);
void push_seqstack(seqstack_t *s, datatype_t data);
datatype_t pop_seqstack(seqstack_t *s);
#endif //_STACK_H
stack.c
//
// Created by yanbo.zhang on 2025-02-25.
//
#include "stack.h"
seqstack_t * create_empty_seqstack(){
seqstack_t *s = NULL;
s = (seqstack_t *)malloc(sizeof(seqstack_t));
if (NULL == s) {
printf("create empty seqstack failed\n");
return NULL;
}
memset(s,0,sizeof(seqstack_t));
s->top = -1;
return s;
}
int is_empty_seqstack(seqstack_t *s) {
return s->top == -1 ? 1 : 0;
}
int is_full_seqstack(seqstack_t *s) {
return s->top == MAX - 1 ? 1 : 0;
}
void push_seqstack(seqstack_t *s, datatype_t data) {
s->buf[++s->top] = data;
}
datatype_t pop_seqstack(seqstack_t *s) {
return s->buf[s->top--];
}
main.c
#include "stack.h"
int main(void) {
char arr[] = {'a','n','i','h','c',' ','e','v','o','l',' ','I'};
seqstack_t *s = create_empty_seqstack();
for (int i = 0; i < MAX; i++) {
if(!is_full_seqstack(s)) {
push_seqstack(s, arr[i]);
}
}
while (!is_empty_seqstack(s)) {
printf("%c ",pop_seqstack(s));
}
return 0;
}
【图片】