为什么会出现这种错误 error C2296: '&' : illegal, left operand has type 'struct LNode *'
#include<stdio.h>#include<stdlib.h>typedefintElemType;typedefstructLNode{ElemTypedata...
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
//用尾插法创建单链表
void CreateLinkListTail(LinkList *L,int n)
{
int i;
ElemType e;
LinkList p,q;
p=*L; //p是头结点
for(i=0;i<n;i++)
{
q=(LNode *)malloc(sizeof(LNode));
printf("请输入数组元素:");
scanf("%d",&e);
q->data=e;
p->next=q;
p=q;
}
p->next=NULL;
}
int LinkListInsert(LinkList *L,int i,ElemType e)
{
int j=1;
LinkList p,s;
p=*L;
while(p & j<i)
{
p=p->next;
j++;
}
if(!p || j>i)
{
return 0;
}
s=(LNode *)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}
int LinkListDelete(LinkList *L,int i,ElemType *e)
{
int j=1;
LinkList p;
p=*L;
while(p->next & j<i)
{
p=p->next;
j++;
}
if(!p->next || j>i)
{
return 0;
}
*e=p->next->data;
p->next=p->next->next;
return 1;
}
int Locate(LinkList L,ElemType e)
{
int i=1;
LinkList p;
p=L->next;
while(p)
{
if(p->data==e)
{
return i;
}
else
{
p=p->next;
i++;
}
}
return 0;
}
void print(LinkList L)
{
LinkList p;
p=L->next;
while(p)
{
printf("%d",p->data);
p=p->next;
}
}
void main()
{
int n;
int e,status;
LinkList L;
printf("请输入链表长度n=");
scanf("%d",&n);
CreateLinkList(&L,n);
printf("\n\n");
status=LinkListInsert(&L,2,11);
if(status)
{
printf("插入成功!输出插入后的单链表:\n");
print(L);
}
else
{
printf("插入失败!\n");
}
printf("\n\n");
status=LinkListDelete(&L,2,&e);
printf("输入要删除的元素!");
scanf("%d",&e);
if(status)
{
printf("删除成功!输出删除后的单链表:\n");
print(L);
}
else
{
printf("删除失败!\n");
}
printf("\n\n");
status=Locate(L,3);
if(status)
{
printf("查找成功!查找的元素位于单链表的第%d位",status);
}
else
{
printf("查找失败!\n");
}
printf("\n\n");
} 展开
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
//用尾插法创建单链表
void CreateLinkListTail(LinkList *L,int n)
{
int i;
ElemType e;
LinkList p,q;
p=*L; //p是头结点
for(i=0;i<n;i++)
{
q=(LNode *)malloc(sizeof(LNode));
printf("请输入数组元素:");
scanf("%d",&e);
q->data=e;
p->next=q;
p=q;
}
p->next=NULL;
}
int LinkListInsert(LinkList *L,int i,ElemType e)
{
int j=1;
LinkList p,s;
p=*L;
while(p & j<i)
{
p=p->next;
j++;
}
if(!p || j>i)
{
return 0;
}
s=(LNode *)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}
int LinkListDelete(LinkList *L,int i,ElemType *e)
{
int j=1;
LinkList p;
p=*L;
while(p->next & j<i)
{
p=p->next;
j++;
}
if(!p->next || j>i)
{
return 0;
}
*e=p->next->data;
p->next=p->next->next;
return 1;
}
int Locate(LinkList L,ElemType e)
{
int i=1;
LinkList p;
p=L->next;
while(p)
{
if(p->data==e)
{
return i;
}
else
{
p=p->next;
i++;
}
}
return 0;
}
void print(LinkList L)
{
LinkList p;
p=L->next;
while(p)
{
printf("%d",p->data);
p=p->next;
}
}
void main()
{
int n;
int e,status;
LinkList L;
printf("请输入链表长度n=");
scanf("%d",&n);
CreateLinkList(&L,n);
printf("\n\n");
status=LinkListInsert(&L,2,11);
if(status)
{
printf("插入成功!输出插入后的单链表:\n");
print(L);
}
else
{
printf("插入失败!\n");
}
printf("\n\n");
status=LinkListDelete(&L,2,&e);
printf("输入要删除的元素!");
scanf("%d",&e);
if(status)
{
printf("删除成功!输出删除后的单链表:\n");
print(L);
}
else
{
printf("删除失败!\n");
}
printf("\n\n");
status=Locate(L,3);
if(status)
{
printf("查找成功!查找的元素位于单链表的第%d位",status);
}
else
{
printf("查找失败!\n");
}
printf("\n\n");
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询