单链表的实现中出现error: expected ';', ',' or ')' before '&' token的错误

树顶上的橙子 2017-03-11 02:33:43
#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;

typedef struct LNode{
ElemType data;//数据域
struct LNode *next; //指针域
}LNode, *LinkList;

//初始化线性表
void Init_LinkList(LinkLinst &L){
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
}

//取元素
int GetElem_LinkList(LinkList &L, int i, Elemtype e){
//L是带头结点的链表的头指针,以e返回第i个元素
p = L->next;//p指向第一个节点
j = 1;//j为记数量
while(p&&j<1){//顺时针向后查找,直到p指向第i个元素
p = p->next;
++j;
}
if(!p||j>i){//如果p不存在
return 0;
}
else{
e = p->data;
return 1;
}
}

//插入数组元素
int Insert_LinkList(LinkList &L, int i, ElemType e){
p = L->next;
j=0;
while(p&&j<i-1){
p=p->next;
++j
}
if(!p||j>i-1){//插入位置非法
return 0;
}
else{
s=(LinkList)malloc(sizeof(LNode));
s->data = x;
s->next = p->next;
p-next = s;
return 1;
}
}

//删除元素
int Delete_LinkList(LinkList &L, int i, ElemType e){
p = L->next;
j=1;
while(p&&j<i-1){
p=p->next;
++j;
}
if(!p||j>i-1){
return 0;
}
else{
q=p->next;
p->next=q->next;
e = q->data;
free(q);
return 1;
}

//建立线性表
//头插法:
void CreatLinkList(LinkList &L, int n){
L=(LinkList *)malloc(sizeof(LinkList);
//创建头结点
L->next=NULL;
for(i=n;i>0;i--){
p=(LinkList *)malloc(sizeof(LNode));
scanf(&p->data);
p->next = L->next;
L->next = p;
}
}

//线性表的合并
void Merge_L(LinkList &La, LinkList &Lb, LinkList &Lc){
//按值排序的单链表La,Lb,归并为Lc后也按值排序
pa = La->next;
pb = Lb->next;
Lc = pc = La;//初始化
while(pa&&pb){//将pa,pa结点按大小依次插入c中
if(pa->data<=pb->data){
pc-next=pa;
pc= pa;
pa=pa->next;
}else{
pc->next = pb;
pc = pb;
pb = pb->next;
}
pc -> next =pa?pa:pb;//插入剩余值
free(Lb);
}

}











出现相同的错误:
main.c|12|error: expected ')' before '&' token|
main.c|18|error: expected ';', ',' or ')' before '&' token|
main.c|36|error: expected ';', ',' or ')' before '&' token|
main.c|56|error: expected ';', ',' or ')' before '&' token|

求助
...全文
1173 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
树顶上的橙子 2017-03-11
  • 打赏
  • 举报
回复
引用 2 楼 cfjtaishan 的回复:
注意你的coding style.
谢谢!
自信男孩 2017-03-11
  • 打赏
  • 举报
回复
注意你的coding style.
自信男孩 2017-03-11
  • 打赏
  • 举报
回复
出现这样的错误,原因是C语言里不支持引用,这是C++才会有的语法功能;建议是用*; 你的代码除了这些error,以外,还有很多。建议你自己一一修改了。以下是改过的:
#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;

typedef struct LNode{
    ElemType data;//数据域
    struct LNode *next; //指针域
}LNode, *LinkList;

//初始化线性表
void Init_LinkList(LinkList *L)
{
    *L = (LinkList)malloc(sizeof(LNode));
    (*L)->next = NULL;
}

//取元素
int GetElem_LinkList(LinkList *L, int i, ElemType *e)
{
    int j;
    LinkList p;

    //L是带头结点的链表的头指针,以e返回第i个元素
    p = (*L)->next;//p指向第一个节点
    j = 1;//j为记数量
    while (p && j < 1) {//顺时针向后查找,直到p指向第i个元素
        p = p->next;
        ++j;
    }
    if(!p||j>i){//如果p不存在
        return 0;
    }
    else{
        *e = p->data;
        return 1;
    }
}

//插入数组元素
int Insert_LinkList(LinkList *L, int i, ElemType e)
{
    int j;
    LinkList p, s;

    p = (*L)->next;
    j = 0;
    while (p && j < i-1) {
        p = p->next;
        ++j;
    }
    if (!p || j > i-1){//插入位置非法
        return 0;
    } else {
        s=(LinkList)malloc(sizeof(LNode));
        s->data = e;
        s->next = p->next;
        p->next = s;

        return 1;
    }
}

//删除元素
int Delete_LinkList(LinkList *L, int i, ElemType *e)
{
    int j;
    LinkList p, q;

    p = (*L)->next;
    j = 1;
    while (p && j < i - 1) {
        p = p->next;
        ++j;
    }
    if (!p || j > i - 1) {
        return 0;
    } else {
        q=p->next;
        p->next = q->next;
        *e = q->data;
        free(q);
        return 1;
    }
}
//建立线性表
//头插法:
void CreatLinkList(LinkList *L, int n)
{
    int i;
    LinkList p;

    L=(LinkList *)malloc(sizeof(LinkList));
    //创建头结点
    (*L)->next=NULL;
    for(i = n; i > 0; i--) {
        p = (LinkList)malloc(sizeof(LNode));
        scanf("%d", &p->data);
        p->next = (*L)->next;
        (*L)->next = p;
    }
}

//线性表的合并
void Merge_L(LinkList La, LinkList Lb, LinkList *Lc)
{
    LinkList pa, pb, pc;

    //按值排序的单链表La,Lb,归并为Lc后也按值排序
    pa = La->next;
    pb = Lb->next;
    *Lc = pc = La;//初始化

    while (pa&&pb) {//将pa,pa结点按大小依次插入c中
        if(pa->data <= pb->data){
            pc->next = pa;
            pc = pa;
            pa = pa->next;
        }else{
            pc->next = pb;
            pc = pb;
            pb = pb->next;
        }
        pc -> next =pa?pa:pb;//插入剩余值
        free(Lb);
    }
}

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧