数据结构 单链表
类型定义:
typedef struct lnode
{
elemtype data;
struct lnode *next;
}Lnode, *LinkList;
int InitList(LinkList L)//构造一个空的线性表L
{ 构造一个空的线性表L
*L=(LinkList)malloc(sizeof(struct LNode));
if(!*L) / 存储分配失败 /
exit(OVERFLOW);
(*L)->next=NULL; / 指针域为空 */
return OK;
}
int ListInsert(LinkList L,int i,ElemType e) //在带头结点的单链线性表L中第i个位置之前插入元素e
{
int j=0;
LinkList p=L,s;
while(p&&j
{
p=p->next;
j++;
}
if(!p||j>i-1) /* i小于1或者大于表长 /
return ERROR;
s=(LinkList)malloc(sizeof(struct LNode)); / 生成新结点 /
s->data=e; / 插入L中 */
s->next=p->next;
p->next=s;
return OK;
}
void main()
{
LinkList L;
ElemType e;
int i;
int j;
i=InitList(&L);
for(j=1;j<=10;j++)
ListInsert(L,j,j);
}
在类型定义中linklist已经是指向节点的指针了,为什么在构造一个空的线性表L的函数int InitList(LinkList *L) 中形参为LinkList *L(即L为指向指针的指针),而不是LinkList L????linklist作为一个指针也可以操作链表的呀!!!
在链表插入函数int ListInsert(LinkList L,int i,ElemType e)中,形参为什么却变成了LinkList L???
在main函数中定义的是指针变量LinkList L; 为何不定义成Lnode L????
什么时候该用LinkList *L,什么时候该用LinkList L,什么时候该用Lnode L?????它们的区别是什么????望大神详细回答,感激万分!!!