编辑代码

#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){
    //如果 front==rear,表示队列为空
    if ((*front)!=rear) {
        /*****链表操作*****/
        H=H->next;
        free(H);
        /********************/        
        (*front)++;
    }
}

void deQueueall(int *front,int rear){
    //如果 front==rear,表示队列为空
    while ((*front)!=rear) {
        // printf("出队元素:%d\n", data);
        /*****链表操作*****/
        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);
    // deQueue_array( &front, rear);
    // deQueueall_array( &front, rear);

    print_Link(H);
    return 0;
}