当前位置: 代码迷 >> C语言 >> 求助 链表
  详细解决方案

求助 链表

热度:472   发布时间:2006-10-18 14:09:25.0
求助 链表

小弟写了个单链表程序 用dev运行不起 有访问违例 ,但用TC就可以运行,请问高手是什么问题

#include<stdio.h>
#include<stdlib.h>
#define M 6
struct List
{
int data;
struct List *next;
};
typedef struct List *Lnode;
typedef Lnode Link;
Link L;
Link Initlist(Link L)
{

L=(Link)malloc(sizeof(Lnode));
L->next=NULL;
return L;

}
Link CreateList(Link L)
{
Link p;
int i,d;

for(i=M;i>0;--i)
{

scanf("%d",&d);
p=(Link)malloc(sizeof(Lnode));
p->data=d;
p->next=L->next;
L->next=p;
}
return L;
}
void PrintfL(Link L)
{
Link p;
p=L->next;
while(p!=NULL)
{
printf("%d\n",p->data);
p=p->next;
}
}
void VistElem_L(Link L,int i)
{
Link p;
int j;
int e;
p=L->next;
j=1;
while(p!=NULL&&j<i)
{
p=p->next;++j;
}

e=p->data;
printf("%d",e);
}
main()
{

/*Link L;*/ int e;
Initlist(L);
CreateList(L);
PrintfL(L);
VistElem_L(L,4);

system("pause");
system("pause");
L->next=NULL;
}

搜索更多相关的解决方案: 链表  

----------------解决方案--------------------------------------------------------

初学数据结构,不知道这个链表类型定义有错没?
struct List
{
int data;
struct List *next;
};
typedef struct List *Lnode;//typedef struct List Lnode
typedef Lnode Link;//
typedef Lnode* Link
Link L;


----------------解决方案--------------------------------------------------------
以下是引用hankym在2006-10-18 14:09:25的发言:

小弟写了个单链表程序 用dev运行不起 有访问违例 ,但用TC就可以运行,请问高手是什么问题

#include<stdio.h>
#include<stdlib.h>
#define M 6
struct List
{
int data;
struct List *next;
};
typedef struct List *Lnode; //Lnode等价List *
typedef Lnode Link;//此处多余,Link就是Lnode.
Link L;
Initlist()//全局变量不需要做参数.,也无须返回.直接对它操作就可以.下同.
{

L=(Link)malloc(sizeof(node));//错误,下同
L->next=NULL;
}
Link CreateList(Link L)
{
Link p;
int i,d;

for(i=M;i>0;--i)
{

scanf("%d",&d);
p=(Link)malloc(sizeof(Lnode));
p->data=d;
p->next=L->next;
L->next=p;
}
return L;
}
void PrintfL(Link L)
{
Link p;
p=L->next;
while(p!=NULL)
{
printf("%d\n",p->data);
p=p->next;
}
}
void VistElem_L(Link L,int i)
{
Link p;
int j;
int e;
p=L->next;
j=1;
while(p!=NULL&&j<i)
{
p=p->next;++j;
}

e=p->data;
printf("%d",e);//可以直接输出,不需辅助变量.
}
main()
{

/*Link L;*/ int e;
Initlist(L);
CreateList(L);
PrintfL(L);
VistElem_L(L,4);

system("pause");
system("pause");
L->next=NULL; //这样是不可以释放空间的,只是找不到这些已经分配的空间而已.
}



----------------解决方案--------------------------------------------------------

  相关解决方案