#include <stdio.h>
#include<stdlib.h>
#define bool int
#define false 0
#define true 1
typedef int datatype;
int n;
typedef struct lnode
{
datatype data [9];
struct lnode *next;
}LNode,*LinkList;
LinkList L,H;
int length_LinkList(LinkList L)
{
LNode * p =L;
int j=0;
while(p->next)
{
p = p->next;
j++;
}
return j;
}
void print_Link(LinkList H)
{
LNode *p= H;
while(p->next)
{
p=p->next;
for(int i=0; i<9; i++)
{
printf("%d ",p->data[i]);
}
printf("\n");
}
printf("\n");
}
void insert_LinkList(LinkList H,int i,int array[9])
{
LNode *p,*s;
p=H;
int j=0;
while(p->next!=NULL&&j<i-1){
p=p->next;
j++;
}
if(j!=i-1) p=NULL;
if(p==NULL) printf("参数i错误:\n");
else
{
s=(LNode *)malloc(sizeof(LNode));
for(int t=0; t< 9; t++) s->data[t] = array[t];
s->next = p->next;
p->next =s;
}
}
void enQueue(int *rear,int data[9]){
(*rear)++;
insert_LinkList(H,*rear,data);
}
void deQueue(int *front,int rear){
if ((*front)!=rear) {
H=H->next;
free(H);
(*front)++;
}
}
void deQueueall(int *front,int rear){
while ((*front)!=rear) {
H=H->next;
free(H);
(*front)++; }
}
int main() {
H = (LNode *)malloc(sizeof(LNode));
int front,rear;
front=rear=0;
int a[9] = {0,1,2,3,4,5,6,7,8};
printf("front: %d, rear: %d\n", front, rear);
enQueue( &rear, a); printf("front: %d, rear: %d\n", front, rear);
enQueue( &rear, a); printf("front: %d, rear: %d\n", front, rear);
enQueue( &rear, a); printf("front: %d, rear: %d\n", front, rear);
a[8]=99;
enQueue( &rear, a); printf("front: %d, rear: %d\n", front, rear);
deQueue( &front, rear); printf("front: %d, rear: %d\n", front, rear);
deQueue( &front, rear); printf("front: %d, rear: %d\n", front, rear);
print_Link(H);
return 0;
}