头插法
生成新结点,将数据存至新结点数据域,将新结点插入当前表头(先将新结点s的next取代原来头结点C的next,再将s赋给C的next也就是连上s)。
void createlistF(LNode *&C,int a[],int n)
{
LNode *s;
int i;
C=(LNode*)malloc(sizeof(LNode));//申请C的头结点空间
C->next=NULL;
for (i=0;i<n;i++)
{
s=(LNode*)malloc(sizeof(LNode));
s->data=a[i];
s->next=C->next;//将原来头指针C所指向的下一个结点的地址,赋给新创建结点s的next
C->next=s;//将而s成功插入C的后面
}
}
尾插法
void createlistR(LNode *&C,int a[],int n)
{
LNode *s,*r;//r始终指向C的终端结点
int i;
C=(LNode *)malloc(sizeof*(LNode));
C->next=NULL;//此时,整个链表只有一个头结点有效,因此C此时既是头结点,又是尾结点
r=C;
for(i=0;i<n;i++)
{
s=(LNode *)malloc(sizeof(LNode));
s->data=a[i];
r->next=s;//s插入
r=r->next;//r始终指向终端端结点
}
r->next=NULL;//装完了,设置终端结点的指针域为NULL
}