出现error: expected ';', ',' or ')' before '&' token,如何用用指针来取代引用,在主函数中传进来地址

平台编译器不支持c++,有没有人帮帮忙看一下要怎么改啊

#include <stdio.h>
#include <malloc.h>
// 链表节点结构
typedef struct Node {
    int data;
    struct Node* next;
}Node, * LinkList;
// 输出单链表
void show(LinkList L) 
{
    L->data == -1 ? 0 : printf(L->data == 0 ? "%d\n无公共元素\n" : "%d\n", L->data);
    Node* p = L->next;
    while (p) {
        printf("%d ", p->data);
        p = p->next;
    }
    printf("\n");
}
LinkList findCommonNodes(LinkList L1, LinkList L2) 
{
    LinkList L = (Node*)malloc(sizeof(Node));
    L->data = 0;
    L->next = NULL;
    Node* p = L1->next, * pL = L;
    while (p) {
        Node* q = L2->next;
        while (q) 
        {
            if (p->data == q->data) {
                Node* f = (Node*)malloc(sizeof(Node));
                f->next = NULL;
                f->data = q->data;
                L->data++;
                pL->next = f;
                pL = f;
                break;
            }
            q = q->next;
        }
        p = p->next;
    }
    return L;
}
// 创建链表 
void createListFromHead(LinkList L)
{
    Node* pL;
    int n, i;
    L = (Node*)malloc(sizeof(Node));// 创建头 
    L->data = -1;
    L->next = NULL;
    pL = L;
    scanf("%d", &n);
    for (i = 0; i < n; i++) {// 生成链表 
        Node* p = (Node*)malloc(sizeof(Node));
        p->next = NULL;
        scanf("%d", &p->data);
        pL->next = p;
        pL = p;
    }
}
int main() 
{
    LinkList L1, L2, L =0;
    createListFromHead(L1);
    createListFromHead(L2);
    //show(L1);
    //show(L2);
    show(L = findCommonNodes(L1, L2));
    return 0;
}
 

指针版的这么改,其他地方不用动, 供参考对照:

//**************  指针版: 指针写法  ******************


#include <stdio.h>
#include <malloc.h>
// 链表节点结构
typedef struct Node {
    int    data;
    struct Node* next;
}Node, * LinkList;
// 输出单链表
void show(LinkList L)
{
    L->data == -1 ? NULL : printf(L->data == 0 ? "%d\n无公共元素" : "%d\n", L->data);
    Node* p = L->next;
    while (p) {
        printf("%d ", p->data);
        p = p->next;
    }
    printf("\n");
}
LinkList findCommonNodes(LinkList L1, LinkList L2)
{
    LinkList L = (Node*)malloc(sizeof(Node));
    L->data = 0;
    L->next = NULL;
    Node* p = L1->next, * pL = L;
    while (p) {
        Node* q = L2->next;
        while (q)
        {
            if (p->data == q->data) {
                Node* f = (Node*)malloc(sizeof(Node));
                f->next = NULL;
                f->data = q->data;
                L->data++;
                pL->next = f;
                pL = f;
                break;
            }
            q = q->next;
        }
        p = p->next;
    }
    return L;
}
// 创建链表 
void createListFromHead(LinkList* L)
{
    Node* pL;
    int n, i;
    (*L) = (Node*)malloc(sizeof(Node));// 创建头
    (*L)->data = -1;
    (*L)->next = NULL;
    pL = (*L);
    scanf("%d", &n);
    for (i = 0; i < n; i++) {// 生成链表
        Node* p = (Node*)malloc(sizeof(Node));
        p->next = NULL;
        scanf("%d", &p->data);
        pL->next = p;
        pL = p;
    }
}
int main()
{
    LinkList L1, L2, L = NULL;
    createListFromHead(&L1);
    createListFromHead(&L2);
    //show(L1);
    //show(L2);
    show(L = findCommonNodes(L1, L2));

    return 0;
}

你这个void createListFromHead(LinkList L)函数是错误的,估计原先使用的引用类型,但C编译器不支持,你去掉引用的话,在函数内是不能修改指针地址的。可以修改为指针的指针,或者将返回值改为LinkList

#include <stdio.h>
#include <malloc.h>
// 链表节点结构
typedef struct Node {
    int data;
    struct Node* next;
}Node, * LinkList;
// 输出单链表
void show(LinkList L) 
{
    L->data == -1 ? 0 : printf(L->data == 0 ? "%d\n无公共元素\n" : "%d\n", L->data);
    Node* p = L->next;
    while (p) {
        printf("%d ", p->data);
        p = p->next;
    }
    printf("\n");
}
LinkList findCommonNodes(LinkList L1, LinkList L2) 
{
    LinkList L = (Node*)malloc(sizeof(Node));
    L->data = 0;
    L->next = NULL;
    Node* p = L1->next, * pL = L;
    while (p) {
        Node* q = L2->next;
        while (q) 
        {
            if (p->data == q->data) {
                Node* f = (Node*)malloc(sizeof(Node));
                f->next = NULL;
                f->data = q->data;
                L->data++;
                pL->next = f;
                pL = f;
                break;
            }
            q = q->next;
        }
        p = p->next;
    }
    return L;
}
// 创建链表 
LinkList createListFromHead(LinkList L)
{
    Node* pL;
    int n, i;
    L = (Node*)malloc(sizeof(Node));// 创建头 
    L->data = -1;
    L->next = NULL;
    pL = L;
    scanf("%d", &n);
    for (i = 0; i < n; i++) {// 生成链表 
        Node* p = (Node*)malloc(sizeof(Node));
        p->next = NULL;
        scanf("%d", &p->data);
        pL->next = p;
        pL = p;
    }
    return L;
}
int main() 
{
    LinkList L1, L2, L =0;
    L1 = createListFromHead(L1);
    L2 = createListFromHead(L2);
    //show(L1);
    //show(L2);
    show(L = findCommonNodes(L1, L2));
    return 0;
}
 

你的代码中语法出现的错误。expected ';', ',' or ')' before '&' token
期望分号逗号或者括号 在&之前