- 一、单链表的整表创建的算法思路--头插法
- 1、声明一结点p和计数器变量j
- 2、初始化一空链表L
- 3、让L的头结点的指针指向NULL,即建立一个带头结点的单链表
- 4、循环生成一新结点赋值给p
- 随即生成一数字赋值给p的数据域p->data
- 将p插入到头结点与前一结点之间
- /*随即生成n个元素的值,建立带头结点的单链表L*/
-
- void CreateListHead(LinkList *L, int n)
- {
- LinkList p;
- int i = 0;
- srand(time(0));//初始化随即种子
- *L = (LinkList)malloc(sizeof(NODE));
- (*L)->next = NULL; //先建立一个带头结点的单链表
- for(i = 0; i<n; i++)
- {
- p = (LinkList)malloc(sizeof(NODE));//生成新结点
- p->data = rand()%100+1;//随机生成100以内的数字
- p->next = (*L)->next;//
- (*L)->next = p; //插入到表头
- }
- }
- /*插队的办法,始终让新结点在第一的位置。*/
- 二、单链表的整表创建的算法思路--尾插法
-
- void CreateListTail(LinkList *L, int n)
- {
- LinkList p,r;
- int i;
- srand(time(0));//初始化随即种子
- *L = (LinkList)malloc(sizeof(NODE));
- r=*L;
-
- for(i = 0; i<n; i++) {
- p = (LinkList)malloc(sizeof(NODE));//生成新结点
- p->data = rand()%100+1;//随机生成100以内的数字
- r->next=p;
- r = p; //r再次成为到表尾
- }
- r->next=null;
- }
- 三、单链表的整体删除
- Status ClearList(LinkList *L)
- {
- LinkList p,q;
- p=(*L)->next;
- while(p){
- q=p->next;
- free(p);
- p=q;
- }
- (*L)->next=NULL;
- return ok;
- }