头插法
void CreatListHead(LinkList* L,int n)
{
LinkList s;
int i;
srand((unsigned)time(0)); //当前时间种下的随机数种子
*L = (LinkList)malloc(sizeof(Node));//生成第一个结点
(*L)->next = NULL; //开始结点为空(其实在插入数据之后它是尾巴)
for (i = 0; i < n; i++)
{
s= (LinkList)malloc(sizeof(Node));//s指向新申请的节点
s->data = rand() % 100 + 1; //给s赋值 随机生成100以内的数字
s->next = (*L)->next; // //将L指向的地址赋值给s;//头插法与尾插法的不同之处主要在此,
//s所指的新节点的指针域next指向L中的开始节点
(*L)->next = s; //头指针的指针域next指向s节点,使得s成为开始节点。
}
}
尾插法
void CreatListTail(LinkList* L, int n)
{
LinkList s,r;
int i;
srand((unsigned)time(0)); //当前时间种下的随机数种子
*L = (LinkList)malloc(sizeof(Node));//生成一个结点
r = *L; //r为指向尾部的结点
for (i = 0; i < n; i++)
{
s = (LinkList)malloc(sizeof(Node));//p指向新申请的节点
s->data = rand() % 100 + 1; //给p赋值 随机生成100以内的数字
r->next =s; //将原表尾终端结点指向新的结点,使其脱离尾结点
r = s; //将尾结点重新定义
}
r->next = NULL; //元素已经全部装入链表L中
//L的终端节点指针域为NULL,L建立完成
}