用数组实现栈的方法

来源:互联网 发布:qt 4.8.4 windows下载 编辑:程序博客网 时间:2024/06/08 11:31

用数组实现栈与数组实现表的原理一样,删除表的一些功能就是栈了

#include<stdio.h>#include<stdlib.h>int size;typedef int StackItem;typedef struct sstack*Stack;typedef struct sstack{int top;int maxtop;//栈顶位置的最大值StackItem *data;}Sstack;//*******************************//栈的初始化Stack StackInit(int size){Stack S;S=(Stack)malloc(sizeof(Sstack));S->data=(StackItem *)malloc(sizeof(StackItem)*size);S->maxtop=size;S->top=-1; return S;//因为数组第一个数从位置0开始存,所以初始化为-1;}//*******************************//判断栈是否为空int StackEmpty(Stack S){return S->top<0;}//*******************************//判断栈是否为满int StackFull(Stack S){return S->top==S->maxtop;}//*******************************//取栈顶元素StackItem StackTop(Stack S){if(StackEmpty(S)){printf("Stack is empty");exit(0);}else return S->data[S->top];}//*******************************//新元素入栈void Push(StackItem x,Stack S){if(StackFull(S)){printf("Stack is full");exit(0);}elseS->data[++S->top]=x;}//*******************************//删除栈顶元素StackItem Pop(Stack S){if(StackEmpty(S)){printf("Stack is empty");exit(0);}return S->data[S->top--];}int main(){Stack S;size=10;S=StackInit(size);//*******************************//元素入栈printf("元素入栈:\n");for(int i=1;i<=10;i++){Push(i,S);printf("%d ",i);}printf("\n元素出栈:\n");for(i=1;i<=10;i++)printf("%d ",Pop(S));return 0;}


原创粉丝点击