链表中LinkList L与LinkList *L的区别
typedef struct LNode
{ // 结点类型定义
int no; //编号
int pwd; //报m的人出列,将他的密码作为新的m值
int length; //长度
struct LNode *next;
}LNode, *LinkList;
typedef struct LNode
{ // 结点类型定义
int no; //编号
int pwd; //报m的人出列,将他的密码作为新的m值
int length; //长度
struct LNode *next;
}LNode, *LinkList;
//初始化链表,函数调用完毕后,L会指向一个空的链表,即会改变指针的值。所以要用*L指向指针的指针
int InitList_CL( LinkList *L ) // 生成只含头结点的空循环单链表
{
*L = (LinkList)malloc(sizeof(LNode));
if(!(*L))
exit(OVERFLOW);
(*L)->next = *L;
(*L)->length=0;
return OK;
}
//创建链表
int CreateList_CL( LinkList L, int n )
{ // 按尾插入法建立含n个元素的循环单链表
LNode *p, *q;
int i,no;
L->length=n; //长度
q = L;
//int pwds[]={0,3,1,7,2,4,8,4};
for(i=1; i<=n; i++)
{
p = (LNode *)malloc(sizeof(LNode)); // p指向新结点
//scanf ("%d",&p->data);
p->no = i; //编号
//密码
//p->pwd= i*i+1;
//p->pwd= pwds[i];
printf("输入第%d个人的密码pwd=", i);
scanf("%d", &(p->pwd));
//添加结点
p->next = q->next; //新增结点最后一个结点p指向头结点L
q->next = p; //
q = p; // q指向表尾结点
}
return OK;
}