<span style="font-size:24px;">/*
链式队列
*/
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define OK true
#define ERROR false
#define OVERFLOW -1
typedef bool statue;
typedef int Qelemtype;
typedef struct node{
Qelemtype elem;
node *next;
}NODE,*pNODE;
typedef struct{
pNODE pFront;
pNODE pRear;
}Qeueu;
statue iniQueue(Qeueu *sq){//初始化
sq->pFront=(pNODE)malloc(sizeof(NODE));
if(sq->pFront==NULL){
printf("内存分配失败\n\n");
exit(OVERFLOW);
}
sq->pRear=sq->pFront;
return OK;
}
statue isEmpty(Qeueu sq){
if(sq.pFront==sq.pRear)
return OK;
return ERROR;
}
statue EnQueue(Qeueu *sq,Qelemtype val){//入队
pNODE pnew=(pNODE)malloc(sizeof(NODE));
if(pnew==NULL){
printf("内存分配失败\n\n");
exit(OVERFLOW);
}
pnew->elem=val;
sq->pRear->next=pnew;
pnew->next=NULL;
sq->pRear=pnew;
return OK;
}
statue DeQueue(Qeueu *sq,Qelemtype *val){//出队
if(isEmpty(*sq)){
return ERROR;
}
*val=sq->pFront->elem;
pNODE p=sq->pFront;
sq->pFront=sq->pFront->next;
free(p);
return OK;
}
void showQueue(Qeueu sq){
if(isEmpty(sq)){
printf("EMPTY\n");
return;
}
while(!isEmpty(sq)){
printf("%d ",sq.pFront->next->elem);
sq.pFront=sq.pFront->next;
}
printf("\n");
}
int main(){
Qeueu sq;
int val;
iniQueue(&sq);
EnQueue(&sq,2);
EnQueue(&sq,3);
DeQueue(&sq,&val);
EnQueue(&sq,4);
showQueue(sq);
return 0;
}</span>
链式队列
最新推荐文章于 2024-08-21 23:51:20 发布