队列顺序存储

#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;  //基地址  ————创建动态分配存储空间 
	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 Visit(DL*d);
#endif

```cpp
#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;
	return OK; 
}

Status Push(DL *d,ElemType *e){//插入元素到对尾 
if ((d->rear+1)%MAXSIZE==d->front){
	return ERROR;
}
d->base[d->rear] = *e;
d->rear = (d->rear + 1)%MAXSIZE;
return OK;
}
Status Pop(DL *d,ElemType *e){//输出对列头元素 
	if(d->front	==d->rear){
		return ERROR;
	}
	*e=d->base[d->front];
	d->front=(d->front+1)%MAXSIZE;
	return OK;
}
Status IsEmpty(DL *d){//判断队列是否为空
	if(d->front == d->rear)
		return TRUE;
	else
		return FALSE;
}

```cpp
#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);
	}
	
	t=Push(d,&e);
	if(t==OK)
		printf("入队成功\n");
		else
		printf("入队错误\n");

	t=IsEmpty(d);
	if(t==TRUE)
		printf("队列为空\n");	
		else
		printf("队列不为空\n");
		
		t=Pop(d,&e);
		if(t==OK){
			printf("队列头元素为:%d",e);
			printf("\n队列头下标为:%d\n",d->front);
		}
			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、付费专栏及课程。

余额充值