数据结构——队列函数(C语言)
//队列的构造 (队列)
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define TRUE 1
#define FALSE 0
typedef struct Element{
int x; //自定义的数据域
}Element;
typedef struct array{ //定义队列结构
Element elem;
struct array *next;
}*PLArray;
typedef struct Node{
PLArray front; //指向队头
PLArray rear; //指向队尾
int len; //队列实际长度
}*pNode;
/********队列函数*******/
int InitArray(pNode &S){ //构造空队列
PLArray q=(PLArray)malloc(sizeof(PLArray)); //申请新结点
S=(pNode)malloc(sizeof(pNode));
S->front=q;
S->rear=q;
S->front->next=NULL;
S->len=0;
return OK;
}
int Push(pNode &S,Element e){ //插入数据e为队列的队尾
PLArray p=(PLArray)malloc(sizeof(PLArray)); //申请新结点
p->elem=e;
p->next=NULL;
S->rear->next=p; //将结点插入到队尾
S->rear=p; //修改队尾指针
S->len++;
}
int Pop(pNode &S,Element &e){ //删除队头元素,,用e返回其删除数据
if(S->front==S->rear) return FALSE;
PLArray p=S->front->next; //p指向队头
e=p->elem;
S->front->next=p->next; //修改头结点的指针域
if(S->rear==p) S->rear=S->front; //最后元素被删除
S->len--;
return OK ;
}
int ArrayEmpty(pNode &S){ //判断队列是否为空
if(S->len==0) return TRUE;
else return FALSE;
}
int Refer(pNode &S,Element &e) { //查询队头元素
e=S->front->next->elem;
}
int main(){
return 0;
}