2 caijunmao Caijunmao 于 2017.08.29 12:19 提问

C语言求程序:顺序循环队列的实现和相关操作

求顺序循环队列的实现和相关操作的C语言程序代码。。。。。。。

1个回答

zy841958835
zy841958835   Ds   Rxr 2017.08.29 13:19
已采纳

#include

#include

#define OK 1

#define ERROR 0

#define QUEUE_SIZE 100

typedef int Status;

typedef int ElemType;

typedef struct Qnode

{

ElemType base;

int front;

int rear;

int count;

} Qnode;

Status Init(Qnode &qq)

{

qq.base = (ElemType
)malloc(QUEUE_SIZE * sizeof(ElemType));

if (qq.base == NULL) return ERROR;

qq.front = 0;

qq.rear = 0;

qq.count = 0;

return OK;

}

Status EnQueue(Qnode &qq, ElemType e)

{

   if ((qq.rear + 1) % QUEUE_SIZE == qq.front)  
   return ERROR;  
   qq.base[qq.rear] = e;  
   qq.rear = (qq.rear + 1)%QUEUE_SIZE;  
   qq.count++;  
   return OK;  

}

Status DeQueue(Qnode &qq, ElemType &e)

{

if (qq.rear == qq.front)

return ERROR;

e = qq.base[qq.front];

qq.front = (qq.front + 1) % QUEUE_SIZE;

qq.count--;

return OK;

}

Status GetTop(Qnode &qq, ElemType &e)

{

if (qq.rear == qq.front)

return ERROR;

e = qq.base[qq.front];

return OK;

}

Staus Destroy(Qnode qq)

{

free(qq.base);

qq.base = NULL;

qq.count = 0;

return OK;

}

int main()

{

Qnode qq;

Init(qq);

int m, i;

printf("how many nums?\n");

scanf("%d", &m);

for (i = 0; i < m; i++)

{

int e;

scanf("%d", &e);

EnQueue(qq, e);

}

int e;

GetTop(qq, e);

printf("%d\n" , e);

for (i = 0; i < m; i++)

{

DeQueue(qq, e);

printf("%d ", e);

}

printf("\n");

system ("pause");

return 0;

}

Csdn user default icon
上传中...
上传图片
插入图片