数据结构-堆栈-数组实现

来源:互联网 发布:正规网络兼职赚钱 编辑:程序博客网 时间:2024/05/20 07:17

什么是堆栈?

堆栈形如数组,是一种数据存储方式.
堆栈存数像弹夹装弹
这里写图片描述
子弹从头开始装,最先装进去的,最后出来.
堆栈也是同样道理,最先装入的内容,最后出来,就是所谓的先进后出.

/* * 堆 数组实现 * * */#include <stdio.h>#include <stdlib.h>#include <stdbool.h>//定义堆栈struct SNode {    int *data;    int top;    int maxSize;};typedef struct SNode * Stack;//创建一个堆栈Stack CreakStack(int maxSize){    Stack s=(Stack)malloc(sizeof(struct SNode));    s->data=(int *)malloc(maxSize * sizeof(int));    s->maxSize=maxSize;    s->top=-1;    return s;}//判断是否已满bool isFull(Stack s){    return  (s->top==s->maxSize-1);}//判断是否为空bool isEmpty(Stack s){    return  (s->top==-1);}//压栈bool Push(Stack s,int num){    if(isFull(s)){        printf("堆栈满");        return false;    }    else{        s->data[++(s->top)]=num;        return true;    }}//出栈int Pop(Stack s){    if(isEmpty(s)){        printf("堆栈空");        return NULL;    }    else{        return (s->data[(s->top)--]);    }}//测试int main(){    Stack stack=CreakStack(10);    Pop(stack);    for(int i=0;i<10;i++){        Push(stack,i);    }    Push(stack,11);    for(int i=0;i<10;i++){        printf("%d  ",Pop(stack));    }}
原创粉丝点击