length队列

#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->base=(ElemType*)malloc(MAXSIZE*sizeof(ElemType)); 
	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"
//顺序循环队列--length解决队空队满状态的判断
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");
/
// printf("当前长度为%d\n",d->length);
    t=IsEmpty(d);
	if(t==TRUE)
		printf("队列为空\n");	
		else
		printf("队列不为空\n");
		
	
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值