#pragma once #ifndef STACK_H #define STACK_H #define INFINITY 65535 //表示无穷大 #define MAXSIZE 1000 //栈的最大空间 typedef int ElemType; //栈的数据类型
#include"Stack.h" #include<stdio.h> int main() { Stack s; InitStack(&s); for (int i = 1; i < 20; i += 2) Push(&s, i); Print(&s); printf("栈顶的元素为:\n"); int k = Top(&s); printf("%d\n", k); Clear(&s); if (IsEmpty(&s)) printf("栈为空\n"); else printf("栈不为空\n"); return 0; }
typedef struct{ElemType data[MAXSIZE];//栈的大小int top;//栈的游标}Stack;void InitStack(Stack *s);//初始化栈bool IsEmpty(Stack *s);//判断栈是否为空ElemType Top(Stack *s);//返回栈顶的元素ElemType Pop(Stack *s);//返回并删除栈顶的元素void Push(Stack *s, ElemType e);//将元素e压栈void Print(Stack *s);//输出从栈底到栈顶的元素void Clear(Stack *s);//清空栈元素#endif // !STACK_H
#pragma once #include"Stack.h" #include<stdio.h> void InitStack(Stack *s)//栈初始化 { s->top = -1; } bool IsEmpty(Stack *s)//判断栈是否为空 { if (s->top == -1) return true; return false; } ElemType Top(Stack *s)//返回栈顶的元素 { if (!IsEmpty(s)) return s->data[s->top]; return INFINITY; } ElemType Pop(Stack *s)//返回并删除栈顶的元素 { if (!IsEmpty(s)) return s->data[s->top--]; return INFINITY; } void Push(Stack *s, ElemType e)//将元素压栈 { if (s->top >= MAXSIZE - 1) return; s->top++; s->data[s->top] = e; } void Clear(Stack *s)//清空栈 { s->top = -1; } void Print(Stack *s)//打印栈底到栈顶的元素 { for (int i = 0; i < s->top; ++i) printf("%d ", s->data[i]); printf("\n"); }
堆栈的工作原理
最新推荐文章于 2024-06-17 23:55:50 发布