c++的引用不知道为什么会报错?求指教!

#include <iostream>
#include <cstdio>
using namespace std;
typedef int ElemType;
typedef int Status;
const int n=5;
struct Node{
    ElemType data;
    struct Node *next;
}Node,*LinkList;
void print_title();
void CreateList(LinkList &L,int n);
Status ListDelete_first(LinkList &L);
Status ListTraverse(LinkList &L);
int main(){
    int x;
    ElemType e;
    LinkList L;
    CreateList(L,n);
    print_title();
    scanf("%d",&x);
    switch(x){
            case 1:ListDelete_first(L);break;
            case 2:ListTraverse(L);break;
            default:;
    }
    return 0;
}
void print_title(){
    cout<<"Delete a number in the first,input 1;"<<endl;
    cout<<"See all numbers,input 2;"<<endl;
    cout<<"Quit,input any other characters."<<endl;
}
void CreateList(LinkList &L,int n){
    LinkList p;
    L=(LinkList)malloc(sizeof(Node));
    L->next=NULL;
    for(i=n;i>0;--i){
        p=(LinkList)malloc(sizeof(Node));
        cin>>p->data;
        p->next=L->next;
        L->next=p;
    }
}
Status  ListDelete_first(LinkList &L){
    LinkList p;
    p=L->next;
    if(!p)return false;
    p=p->next;
    L->next=L->next->next;
    free(p);
    p=NULL;
    return true;
}
Status  ListTraverse(LinkList &L){
    LinkList p;
    p=L->next;
    if(!p){
        cout<<"empty list!"<<endl;
        return false;
    }
    while(p->next){
        p=p->next;
        cout<<p->data<<"\t";
    }
    cout<<endl;
    return true;
}
//error: variable or field 'CreateList' declared void|
//error: 'L' was not declared in this scope|
//error: expected primary-expression before 'int'|


mrs_empress
浏览 2405回答 3
3回答

朕日理万机

别的,部分没看,你目前的问题,LinkList(第10行),不是一个类型名,而是一个变量名,是一个指针类型指向了一个Node实例。而你在后面的代码中把它当成了一个类型名用。

锅里煮水

linklist本身是一个指针变量,L不能定义为Linklist类型的

SupperMary

编译报错在12行,手动去掉"LinkList &L"之后。报错信息“error: variable or field 'CreateList' declared void|”没有了,应该是链表格式没写对(我还没有学过链表,不知道具体情况)报错信息“error: 'L' was not declared in this scope|”也没有了把“void CreateList(LinkList &L,int n);”改成“void CreateList(int n,LinkList &L);”之后,报错信息”error: expected primary-expression before 'int'|“也没有了,说明问题还是出在“LinkList &L”上,很有可能是函数格式不对。
打开App,查看更多内容
随时随地看视频慕课网APP