//顺序表实现队列操作
//只用队列出队首,入队尾
#includ<stdio.h>
#include<stdlib.h>
#include<time.h>
typedef struct queue{
table *data;
int head,tail,size,count;
}queue;
typedef struct table{
int size,count;
int*data;
}table;
table *initvector(int n){
table *T=(table*)malloc(sizeof(table));
int *p=(int*)malloc(sizeof(int));
T->size=n;
T->count=0;
return T;
}
int tableseek(table *T,int pos){
if(pos<0||pos>=T->size) return 0;
return T->data[pos];
}
int inserttable(table *T,int pos,int val){
if(pos<0||pos>=T->size) return 0;
T->data[pos]=val;
T->count+=1;
return 1;
}
int push(queue *q,int val){
if(fulling(q)) return 0;
inserttable(q->data,p->tail,val);
q->tail+=1;
if(q->tail==q->size) q->size=0;//设置循环队列,将tail指针放入队首防止假溢出
q->count+=1;
return 1;
}
int pop(queue *q,int val){
if(empty(q)) return 0;
q->head+=1;
q->count-=1;
return 1;
}
int front(queue *q,int pos){
tableseek(q,pos);
return 1;
}
bool empty(queue *q){
if(q->count==0) return true;
return false;
}
bool fulling(queue *q){
if(q->count==q->size) return true;
return false;
}
queue *intqueue(int n){
queue *que=(queue*)malloc(sizeof(queue));
que->data=initvector(n);
que->head=0;
que->count=0;
que->size=n;
que->tail=0;
return que;
}
void cleartable(table *T){
if(T==NULL) return ;
free(T->count);
free(T);
return ;
}
void clearqueue(queue *q){
if(q==NULL) return ;
cleartable(q);
free(q);
return ;
}
int main(void){
return 0;
}