//头插法
/*随机产生n个元素的值,建立带表头结点的线性表L(头插法)*/
void CreateListHead(LinkList *L,int n)
{
LinkList p;
int i;
srand(time(0)); //初始化随机数种子
/*Srand是种下随机种子数,你每回种下的种子不一样,用Rand得到的随机数就不一样。
为了每回种下一个不一样的种子,所以就选用Time(0),Time(0)是得到当前时时间值(因为每时每刻时间是不一样的了)。
*/
*L=(LinkList)malloc(sizeof(Node));
(*L)->next =NULL; //先建立一个带头结点的单链表
for(i=0;i<n;i++)
{
p=(LinkList)malloc(sizeof(Node));//生成新结点
p->date=rand()%100+1; //随机生成100以内的数字
p->next=(*L)->next;
(*L)->next=p; //插入到表头
}
}
//=================================================================
//=================================================================
//尾插法
/*随机产生n个元素的值,建立带表头结点的线性表L(尾插法)*/
void CreateListTail(LinkList *L,int n)
{
LinkList p,r;
int i;
srand(time(0)); //初始化随机数种子
*L=(LinkList)malloc(sizeof(Node));//为整个线性表
r=*L; //r为指向尾部的结点
for(i=0;i<n;i++)
{
p=(Node*)malloc(sizeof(Node));//Node *相当于LinkList
p->date=rand()%100+1; //随机生成100以内的数字
r->next=p; //将表尾终端结点的指针指向新结点
r=p; //将当前的新结点定位表尾终端结点
}
r->next=NULL; //表示当前链表结束
/*随机产生n个元素的值,建立带表头结点的线性表L(头插法)*/
void CreateListHead(LinkList *L,int n)
{
LinkList p;
int i;
srand(time(0)); //初始化随机数种子
/*Srand是种下随机种子数,你每回种下的种子不一样,用Rand得到的随机数就不一样。
为了每回种下一个不一样的种子,所以就选用Time(0),Time(0)是得到当前时时间值(因为每时每刻时间是不一样的了)。
*/
*L=(LinkList)malloc(sizeof(Node));
(*L)->next =NULL; //先建立一个带头结点的单链表
for(i=0;i<n;i++)
{
p=(LinkList)malloc(sizeof(Node));//生成新结点
p->date=rand()%100+1; //随机生成100以内的数字
p->next=(*L)->next;
(*L)->next=p; //插入到表头
}
}
//=================================================================
//=================================================================
//尾插法
/*随机产生n个元素的值,建立带表头结点的线性表L(尾插法)*/
void CreateListTail(LinkList *L,int n)
{
LinkList p,r;
int i;
srand(time(0)); //初始化随机数种子
*L=(LinkList)malloc(sizeof(Node));//为整个线性表
r=*L; //r为指向尾部的结点
for(i=0;i<n;i++)
{
p=(Node*)malloc(sizeof(Node));//Node *相当于LinkList
p->date=rand()%100+1; //随机生成100以内的数字
r->next=p; //将表尾终端结点的指针指向新结点
r=p; //将当前的新结点定位表尾终端结点
}
r->next=NULL; //表示当前链表结束
}
/*初始条件:顺序线性表L已经存在, 操作结果:将L重置为空表*/
Status ClearList(LinkList *L)
{
LinkList p,q;
p=(*L)->next; //p指向第一个结点
while(p) //没到表尾
{
q=p->next; //将下一个结点赋值为q;
free(p); //释放p
p=q; //将q赋值给p
}
(*L)->next=NULL; //头结点指针域为空
return OK;
}