您的位置:首页 > 理论基础 > 数据结构算法

数据结构基础8_循环队列(顺序实现)

2015-10-17 21:47 736 查看
typedef int ElemType;

typedef int Status;

#define true 1

#define false 0

#define maxsize 100

#include<stdio.h>

#include<stdlib.h>

typedef struct {

ElemType *base;

int front;

int rear;

}sqqueue;

Status Initqueue(sqqueue &S)

{

S.base=(ElemType*)malloc(sizeof(maxsize*sizeof(ElemType)));

if(!S.base)

{

return false;

}

S.front=S.rear=0;

return true;

}

Status Destroyqueue(sqqueue &S)

{

free(S.base);

S.base=NULL;

return true;

}

Status Clearqueue(sqqueue &S)

{

S.front=S.rear=0;

return true;

}

Status Emptyqueue(sqqueue &S)

{

if(S.front==S.rear)

{

return true;

}

else

return false;

}

int Queuelength(sqqueue S)

{

return (S.rear-S.front+maxsize)%maxsize;

}

Status Gethead(sqqueue S,ElemType &e)

{

if(S.rear==S.front)

{

return false;

}

e=*(S.base+S.front);

return true;

}

Status Enqueue(sqqueue &S,ElemType e)

{

if((S.rear+1)%maxsize==S.front)

{

return false;

}

S.base[S.rear]=e;

S.rear=(S.rear+1)%maxsize;

return true;

}

Status Dequeue(sqqueue &S,ElemType &e)

{

if(S.front==S.rear)

{

return false;

}

e=S.base[S.front];

S.front=(S.front+1)%maxsize;

return true;

}

Status queuetraverse(sqqueue S)

{

int p;

p=S.front;

while(p!=S.rear)

{

printf("%d",*(p+S.base));

p=(p+1)%maxsize;

}

return true;

}

#include<stdio.h>
#include<sqqueue.h>
#include<stdlib.h>
int main()
{
sqqueue q;
Initqueue(q);
Enqueue(q,1);
Enqueue(q,2);
Enqueue(q,3);
int n;

Dequeue(q,n);
queuetraverse(q);
system("pause");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: