链表程序,运行报错,求指点。
- 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函数中注掉的那两行去掉&就可以了