Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

C语言用尾插法建立单链表时报错了

刚学数据结构
在建立单链表时
void createlistR(LNode *&L, int a[], int n)
这一行报错 [错误] 期待 ';', ',' 或 ')' 在此之前: '&' 符号
请问这是怎么回事呢

#include <stdio.h>
#include <stdlib.h>

typedef struct LNode {
    int data;           //data中存放结点的数据域
    struct LNode *next; //指向后继结点的指针
} LNode;                //定义单链表结点类型

//尾插法建立链表
void createlistR(LNode *&L, int a[], int n) { //要改变的变量用引用型
    LNode *s, *r; //s用来指向新申请的结点,r之中指向L的终端结点
    int i;
    L = (LNode *)malloc(sizeof(LNode)); //申请L的头结点空间
    L->next = NULL;
    r = L;                  // r指向头结点,因为此时头结点就是终端结点
    for (i = 0; i < n; ++i) { // 循环申请n个结点,来接受数组a中的元素
        s = (LNode *)malloc(sizeof(LNode)); // s指新申请的结点
        s->data = a[i];                     // 用新申请的结点来接受a中的一个元素
        r->next = s;                        // 用来接纳新结点
        r = r->next;                        // r指向终端结点,以便于接纳下一个到来的结点
    }
    r->next = NULL; // 数组a中所有的元素都已经装入链表L中,L的终端结点的指针域置为NULL,L建立完成
}

//打印链表数据
void printfList(LNode *L) {
    LNode *temp = L;
    int count = 0; //计数器
    printf("表中的元素为:\n");
    while (temp->next) {
        temp = temp->next;
        printf("%d\t", temp->data);
        count++;
        if (count % 5 == 0) { //每5个元素作为一行
            printf("\n");
        }
    }
    printf("\n");
}

int main() {
    LNode *L;
    int n;
    printf("请输入数组的个数:");
    scanf("%d", &n);
    int a[n];
    printf("请输入数组中的数(用空格分开):\n");
    for (int i = 0; i < n; ++i) {
        scanf("%d", &a[i]);
    }

    //测试尾插法建立链表
    createlistR(L, a, n);

    //查看建立后的链表
    printfList(L);

    return 0;
}

Enregistrer un commentaire

0 Commentaires