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

链表程序,运作报错,求指点

2012-08-24 
链表程序,运行报错,求指点。C/C++ code#include stdio.h#include stdlib.h#include malloc.htypedef

链表程序,运行报错,求指点。

C/C++ code
#include <stdio.h>#include <stdlib.h>#include <malloc.h>typedef struct LNode{    int data;    struct LNode *next;}LNode,*LinkList;void CreateList( LinkList *L, int n){    int i;    LNode *p;    (*L)=(LNode*)malloc(sizeof(LNode));    if(!(*L)) exit(0);    (*L)->next=NULL;    for(i=n;i>0;i--)    {        p=(LNode*)malloc(sizeof(LNode));        if(!p) exit(0);        scanf("%d",&p->data);        p->next = (*L)->next;        (*L)->next = p;    }}void main(){    //    LNode *pnode;//    CreateList(&pnode,10);    LinkList *pl;    CreateList(pl,10);}

我写的这个,一运行就报错了。用注释掉的那两条就可以,我不太明白,这里用指针的指针有问题吗?
先谢谢!

[解决办法]
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;

已经定义linklist 为(struct LNode *)类型了.....
所以给出链表头的时候不是应该Linklist L就好的么;
那个 *L 错了


[解决办法]
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

typedef struct _LNODE
{
int data;
struct LNONDE *next;
}LNODE, *LINKLIST;

void CreateList(LINKLIST *link, int n)
{
int i;
LNODE *p;
link = (LINKLIST)malloc(sizeof(LNODE));
link->next = NULL;
for(i = n; i > 0; i--)
{
p = (LINKLIST)malloc(sizeof(LNODE));
scanf("%d", &p->data);
p->next = link->next;
link->next = p;
}
}

void main()
{
LINKLIST pl;//这个已经是个指针了,所以不需要创建一个指针再加上取地址符
CreateList(pl, 10);//第一个参数是需要一个地址
}
[解决办法]
楼主没有弄清楚指针,*L应改成L,main函数中注掉的那两行去掉&就可以了

热点排行