简单小程序 求帮助啊解决思路
简单小程序 求帮助啊
#include "stdio.h"
#include "malloc.h"
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList CreatList(LinkList &la)
{
int x;
la=(LinkList)malloc(sizeof(LinkList));
scanf("%d",&x);
la->next=NULL;
LNode *s,*r=la;
while(x!=999)
{
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
r->next=s;
r=s;
scanf("%d",&x);
}
r->next=NULL;
return la;
}
LNode *GetElem(LinkList L,int i)
{
int j=1;
LNode *p=L->next;
if(i<1)
return NULL;
while(p&&j<i)
{
p=p->next;
j++;
}
return p;
}
void main()
{
LinkList L;
CreatList(L);
for (int i=1;i<=5;i++)
{
L=L->next;
printf("%d",L->data);
}
int t=*GetElem(L,3)->data;这行提示出错信息://illegal indirection
printf("%d",t);
}
第一个函数是建立一个链表,输入999表示结束
第二个函数是找到第三个元素
预期结果:输入1 2 3 4 5 999
显示:12345
3
但是为什么提示出错啊
------解决方案--------------------
for (int i=1;i<=5;i++)
{
L=L->next;
printf("%d",L->data);
}
这里L改变了。所以改成下面那样
==>
LinkList p=L;
for (int i=1;i<=5;i++)
{
p=p->next;
printf("%d",p->data);
}
------解决方案--------------------
#include "stdio.h"
#include "malloc.h"
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList CreatList(LinkList &la)
{
int x;
la=(LinkList)malloc(sizeof(LinkList));
scanf("%d",&x);
la->next=NULL;
LNode *s,*r=la;
while(x!=999)
{
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
r->next=s;
r=s;
scanf("%d",&x);
}
r->next=NULL;
return la;
}
LNode *GetElem(LinkList L,int i)
{
int j=1;
LNode *p=L->next;
if(i<1)
return NULL;
while(p&&j<i)
{
p=p->next;
j++;
}
return p;
}
void main()
{
LinkList L;
CreatList(L);
for (int i=1;i<=5;i++)
{
L=L->next;
printf("%d",L->data);
}
int t=*GetElem(L,3)->data;这行提示出错信息://illegal indirection
printf("%d",t);
}
第一个函数是建立一个链表,输入999表示结束
第二个函数是找到第三个元素
预期结果:输入1 2 3 4 5 999
显示:12345
3
但是为什么提示出错啊
------解决方案--------------------
for (int i=1;i<=5;i++)
{
L=L->next;
printf("%d",L->data);
}
这里L改变了。所以改成下面那样
==>
LinkList p=L;
for (int i=1;i<=5;i++)
{
p=p->next;
printf("%d",p->data);
}
------解决方案--------------------
- C/C++ code
void main() { LinkList L; LinkList p; CreatList(L); p = L; for (int i=1;i<=5;i++) { p=p->next; printf("%d",p->data); } int t=(GetElem(L,3))->data; printf("%d",t); }
------解决方案--------------------
综合上面所述两种情况,你的程序就能跑对
- C/C++ code
void main() { LinkList L; CreatList(L); LNode *p = L; for (int i=1;i<=5;i++) { p=p->next; printf("%d",p->data); } int t= GetElem(L,3)->data; //这行提示出错信息://illegal indirection printf("%d",t); }