引用改指针怎么改啊有人吗

c语言用不了引用有人会改成指针吗,看一下简单不,帮我改一下 感激不尽

include<stdio.h>    //输入输出头文件
#include<stdlib.h>    //标准头文件
#include<string.h>    //字符串头文件
#include<stdbool.h>    //布尔类型头文件

typedef long long int Elemtype;    //该队列中的元素超长整型
typedef struct Quene* List;    //将该队列结点的指针命名为List
typedef struct LinkQuene* SqList;    //将该队列类型的指针命名为SqList
struct Quene            //定义结点
{
    Elemtype data;    //存放病历号
    List next;            //下一个结点指针
};
struct LinkQuene
{
    List front;    //指向队首结点
    List rear;    //指向队尾结点
};

bool InitQuene(SqList& q);                //初始化队列
bool DestroyQuene(SqList& q);            //销毁队列
bool QueneEmpty(SqList& q);                //判断队列是否为空
bool enQuene(SqList& q, Elemtype& e);    //进队列
bool deQuene(SqList& q, Elemtype& e);    //出队列
bool Test(SqList q);                    //病人看病模拟程序
void menu(void);                        //菜单

int main(int argc, const char* argv[])
{
    SqList q = NULL;
    bool flag = Test(q);
    if (flag)
        printf("谢谢使用,再见。\n");
    return 0;
}
bool Test(SqList q)
{
    int n;
    List p;
    bool flag = false;    //是否关闭程序,默认为“否”
    Elemtype e;
    InitQuene(q);    //创建链队
    menu();            //输出菜单
    while (scanf_s("%d", &n) != EOF) {
        switch (n) {
            case 1:printf("请输入您的病历号(不超过十位的整数):");
                scanf_s("%lld", &e);
                while (e > 1e10) {
                    printf("\n病历号不合规,重新输入:");
                    scanf_s("%lld", &e);
                }
                enQuene(q, e);    //将病历号入队
                printf("\n排队成功。\n");
                break;
            case 2:if (!QueneEmpty(q)) {
                    deQuene(q, e);    //当有人排队,即队不为空时出队
                    printf("就诊成功。\n");
                }
                else
                    printf("当前无人排队。\n");
                break;
            case 3:p = q->front;    //遍历一遍链队
                printf("排在您前面的人有:\n");
                while (p != NULL) {
                    printf("%lld\n", p->data);
                    p = p->next;
                }
                break;
            case 4:p = q->front;    //遍历一遍链队
                printf("排在您前面的人有:\n");
                while (p != NULL) {
                    printf("%lld\n", p->data);
                    p = p->next;
                }
                flag = true;
                break;
            case 5:flag = true;
                break;
            default:printf("指令错误,重新输入。\n");
        }
        if (flag)
            break;
        menu();
    }
    DestroyQuene(q);    //销毁链队
    return true;
}
void menu(void)
{
    printf("==========================\n");
    printf("=======选择您的操作=======\n");
    printf("==    1.排队            ==\n");
    printf("==    2.就诊            ==\n");
    printf("==    3.查看排队        ==\n");
    printf("==    4.不再排队        ==\n");
    printf("==    5.下班            ==\n");
    printf("==========================\n");
}
bool InitQuene(SqList& q)
{
    q = (SqList)malloc(sizeof(LinkQuene));
    //malloc有一定几率申请空间失败,此时继续申请,直到申请成功
    while (!q) {
        q = (SqList)malloc(sizeof(Quene));
    }
    q->front = q->rear = NULL;    //此时队列无元素(两个下标之间差的绝对值为0)
    return true;
}
bool DestroyQuene(SqList& q)
{
    List p;        //工作指针
    while (q->front != q->rear) {    //当队列中的结点大于一个时循环
        p = q->front;                //工作指针指向队首结点
        q->front = q->front->next;    //队首结点后移
        free(p);                    //释放掉工作指针指向的结点
    }
    p = q->front;
    free(p);    //释放掉最后一个结点
    free(q);    //释放掉链队结点
    return true;
}
bool QueneEmpty(SqList& q)
{
    return (q->front == NULL);    //当队列为空时返回“真”,否则返回“假”
}
bool enQuene(SqList& q, Elemtype& e)
{
    List p = (List)malloc(sizeof(Quene));
    //malloc有一定几率申请空间失败,此时继续申请,直到申请成功
    while (!p) {
        p = (List)malloc(sizeof(Quene));
    }
    p->data = e;
    p->next = NULL;
    if (q->rear == NULL)
        q->front = q->rear = p;    //当链队为空时,新结点既是头结点又是尾结点
    else {
        q->rear->next = p;    //将新结点接到队尾
        q->rear = p;        //队尾移动
    }
    return true;
}
bool deQuene(SqList& q, Elemtype& e)
{
    if (q->front == NULL)  //当队列为空时无法出队,返回“假”
        return false;
    List p = q->front;    //工作指针指向队首
    if (q->front == q->rear)    //当链队中只有一个结点时
        q->front = q->rear = NULL;
    else                        //当链队中有一个以上的结点时
        q->front = q->front->next;
    e = p->data;
    free(p);
    return true;
}


修改如下,见注释,供参考:

#include<stdio.h>    //输入输出头文件
#include<stdlib.h>    //标准头文件
#include<string.h>    //字符串头文件
#include<stdbool.h>    //布尔类型头文件

typedef long long int Elemtype; //该队列中的元素超长整型
typedef struct Quene* List;    //将该队列结点的指针命名为List
typedef struct LinkQuene* SqList;    //将该队列类型的指针命名为SqList
struct Quene            //定义结点
{
    Elemtype data;    //存放病历号
    List next;        //下一个结点指针
};
struct LinkQuene
{
    List front;    //指向队首结点
    List rear;    //指向队尾结点
};

bool InitQuene(SqList* q);                //初始化队列
//bool InitQuene(SqList& q);

bool DestroyQuene(SqList q);            //销毁队列
//bool DestroyQuene(SqList& q);

bool QueneEmpty(SqList q);              //判断队列是否为空
//bool QueneEmpty(SqList& q);

bool enQuene(SqList q, Elemtype e);    //进队列
//bool enQuene(SqList& q, Elemtype& e);

bool deQuene(SqList q, Elemtype* e);    //出队列
//bool deQuene(SqList& q, Elemtype& e);

bool Test();                  //病人看病模拟程序
//bool Test(SqList q);

void menu(void);                        //菜单

int main(int argc, const char* argv[])
{
    //SqList q = NULL;             修改
    bool flag = Test(); //Test(q); 修改
    if (flag)
        printf("谢谢使用,再见。\n");
    return 0;
}
bool Test() // Test(SqList q)
{
    int n;
    SqList q = NULL;  //修改
    List p;
    bool flag = false;    //是否关闭程序,默认为“否”
    Elemtype e;
    InitQuene(&q);    //创建链队  修改
    menu();            //输出菜单
    while (scanf_s("%d", &n) != EOF) {
        switch (n) {
            case 1:printf("请输入您的病历号(不超过十位的整数):");
                scanf_s("%lld", &e);
                while (e > 1e10) {
                    printf("\n病历号不合规,重新输入:");
                    scanf_s("%lld", &e);
                }
                enQuene(q, e);    //将病历号入队
                printf("\n排队成功。\n");
                break;
            case 2:if (!QueneEmpty(q)) {
                    deQuene(q, &e);   //当有人排队,即队不为空时出队
                    printf("%lld 就诊成功。\n",e); //修改
                }
                else
                    printf("当前无人排队。\n");
                break;
            case 3:p = q->front;    //遍历一遍链队
                printf("排在您前面的人有:\n");
                while (p != NULL) {
                    printf("%lld\n", p->data);
                    p = p->next;
                }
                break;
            case 4:p = q->front;    //遍历一遍链队
                printf("排在您前面的人有:\n");
                while (p != NULL) {
                    printf("%lld\n", p->data);
                    p = p->next;
                }
                flag = true;
                break;
            case 5:flag = true;
                break;
            default:printf("指令错误,重新输入。\n");
        }
        if (flag)
            break;
        menu();
    }
    DestroyQuene(q);    //销毁链队
    return true;
}
void menu(void)
{
    printf("==========================\n");
    printf("=======选择您的操作=======\n");
    printf("==    1.排队            ==\n");
    printf("==    2.就诊            ==\n");
    printf("==    3.查看排队        ==\n");
    printf("==    4.不再排队        ==\n");
    printf("==    5.下班            ==\n");
    printf("==========================\n");
}
bool InitQuene(SqList* q)
{
    (*q) = (SqList)malloc(sizeof(LinkQuene));        //修改
    //malloc有一定几率申请空间失败,此时继续申请,直到申请成功
    while (!(*q)) {
        (*q) = (SqList)malloc(sizeof(Quene));
    }
    (*q)->front = (*q)->rear = NULL;    //此时队列无元素(两个下标之间差的绝对值为0)
    return true;
}
bool DestroyQuene(SqList q) //DestroyQuene(SqList& q)
{
    List p;        //工作指针
    while (q->front != q->rear) {    //当队列中的结点大于一个时循环
        p = q->front;                //工作指针指向队首结点
        q->front = q->front->next;    //队首结点后移
        free(p);                    //释放掉工作指针指向的结点
    }
    p = q->front;
    free(p);    //释放掉最后一个结点
    free(q);    //释放掉链队结点
    return true;
}
bool QueneEmpty(SqList q) //QueneEmpty(SqList& q)
{
    return (q->front == NULL);    //当队列为空时返回“真”,否则返回“假”
}
bool enQuene(SqList q, Elemtype e) //enQuene(SqListz & q, Elemtype& e)
{
    List p = (List)malloc(sizeof(Quene));
    //malloc有一定几率申请空间失败,此时继续申请,直到申请成功
    while (!p) {
        p = (List)malloc(sizeof(Quene));
    }
    p->data = e;
    p->next = NULL;
    if (q->rear == NULL)
        q->front = q->rear = p;    //当链队为空时,新结点既是头结点又是尾结点
    else {
        q->rear->next = p;    //将新结点接到队尾
        q->rear = p;        //队尾移动
    }
    return true;
}
bool deQuene(SqList q, Elemtype* e)  //deQuene(SqList& q, Elemtype& e)
{
    if (q->front == NULL)  //当队列为空时无法出队,返回“假”
        return false;
    List p = q->front;    //工作指针指向队首
    if (q->front == q->rear)    //当链队中只有一个结点时
        q->front = q->rear = NULL;
    else                        //当链队中有一个以上的结点时
        q->front = q->front->next;
    (*e) = p->data;
    free(p);
    return true;
}

你直接插入代码块比较好,这长图看着太费劲