首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

简单小程序 求帮助啊解决思路

2012-04-14 
简单小程序求帮助啊#include stdio.h#include malloc.htypedef struct LNode{int datastruct LNode *

简单小程序 求帮助啊
#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 indirectionprintf("%d",t);} 

热点排行