数据结构之堆栈
Posted hsiaolung
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构之堆栈相关的知识,希望对你有一定的参考价值。
1.线性表实现堆栈
#include <stdio.h>
#include <stdlib.h>
#define maxsize 100
typedef enum{true,false
}bool;
typedef struct SNode * Stack;
typedef int ElementType;
//定义堆栈结构
struct SNode{
ElementType data[maxsize];
int top;
};
//生成空堆栈
Stack createStack(){
Stack stack=(Stack)malloc(sizeof(struct SNode));
stack->top=0;
}
// 判断堆栈是否已满
bool isFull(Stack s){
if(s->top==maxsize){
return true;
}
return false;
}
//入栈
bool push(Stack s,ElementType e){
if(s->top==maxsize){
printf("栈满
");
return false;
}
else{
s->data[s->top]=e;
s->top++;
return true;
}
}
//出栈
ElementType pop(Stack s){
if(s->top==0){
printf("栈空
");
return ;
}
ElementType e=s->data[s->top-1];
s->top--;
return e;
}
//判断是否为空
bool isEmpty(Stack s){
if(s->top==0){
return true;
}
return false;
}
int main(int argc, char *argv[]) {
Stack stack=createStack();
if(isEmpty(stack)==true){
printf("空栈
");
}
push(stack,1);
push(stack,2);
push(stack,3);
push(stack,4);
push(stack,5);
if(isEmpty(stack)==false){
printf("不是空栈
");
}
int length=stack->top;
for(int i=0;i<length;i++){
printf("%d ",pop(stack));
}
if(isEmpty(stack)==true){
printf("空栈
");
}
return 0;
}
以上是关于数据结构之堆栈的主要内容,如果未能解决你的问题,请参考以下文章