#ifndef STATUS_H
#define STATUS_H
#define OK 1
#define ERROR 0
#define FALSE -1
#define TRUE 1
typedef int ElemType;
typedef int Status;
#endif
#ifndef STACK_H
#define STACK_H
#include "status.h"
#include <stdio.h>
#define MAXSIZE 20
typedef struct {
ElemType base[20];
int front;
int rear;
int length;
}DL;
Status InitDL(DL *d);
Status Push(DL *d,ElemType e);
Status Pop(DL *d,ElemType *e);
Status IsEmpty(DL *d);
Status Show(DL *d,ElemType *e);
Status Delet(DL *d,ElemType *e);
#endif
#include "status.h"
#include <stdio.h>
#include "stack.h"
Status InitDL(DL *d){
d->front=0;
d->rear=0;
d->length=0;
return OK;
}
Status Push(DL *d,ElemType e){
if (d->length ==20){
return ERROR;
}
d->base[d->rear] = e;
d->rear++;
d->length++;
return OK;
}
Status Pop(DL *d,ElemType *e){
if(d->length==0){
return ERROR;
}
d->front=0;
*e=d->base[d->front];
d->front--;
d->length--;
return OK;
}
Status IsEmpty(DL *d){
if(d->length==0)
return TRUE;
else
return FALSE;
}
Status Show(DL *d,ElemType *e){
if(d->length==0){
return ERROR;
}
*e=d->base[d->front];
d->front++;
return OK;
}
#include <stdio.h>
#include "stack.h"
int main(){
DL dl;
DL *d=&dl;
ElemType e;
int n,i,t;
InitDL(d);
printf("头指针指向的下标为 :%d\n",d->front);
printf("尾指针指向的下标为 :%d\n",d->rear);
printf("请输入插入的个数:");
scanf("%d",&n);
for(i=1;i<=n;i++){
printf("你输入的第%d个数为",i);
scanf("%d",&e);
Push(d,e);
}
printf("当前长度为%d\n",d->length);
t=Push(d,e);
if(t==OK)
printf("入队成功\n");
else
printf("入队错误\n");
t=IsEmpty(d);
if(t==TRUE)
printf("队列为空\n");
else
printf("队列不为空\n");
printf("队列遍历\n");
for(i=1;i<=n;i++){
Show(d,&e);
printf("%d ",e);
}
printf("\n");
t=Pop(d,&e);
printf("当前长度为%d\n",d->length);
if(t==OK){
printf("队列头元素为:%d\n",e);
printf("删除对头的队列遍历\n");
for(i=1;i<n;i++){
Pop(d,&e);
printf("%d ",d->base[i]);
}
}
printf("\n");
t=IsEmpty(d);
if(t==TRUE)
printf("队列为空\n");
else
printf("队列不为空\n");
}