单链表的整表创建的算法思路--头插法 尾插法 整体删除

来源:互联网 发布:windows 7系统镜像包 编辑:程序博客网 时间:2024/05/20 05:09
  1. 一、单链表的整表创建的算法思路--头插法 
  2.   
  3. 1、声明一结点p和计数器变量j 
  4. 2、初始化一空链表L 
  5. 3、让L的头结点的指针指向NULL,即建立一个带头结点的单链表 
  6. 4、循环生成一新结点赋值给p 
  7.    随即生成一数字赋值给p的数据域p->data 
  8.    将p插入到头结点与前一结点之间 
  9.   
  10. /*随即生成n个元素的值,建立带头结点的单链表L*/   

  11. void CreateListHead(LinkList *L, int n) 
  12.     LinkList p; 
  13.     int i = 0; 
  14.       
  15.     srand(time(0));//初始化随即种子 
  16.     *L = (LinkList)malloc(sizeof(NODE)); 
  17.     (*L)->next = NULL;  //先建立一个带头结点的单链表 
  18.   
  19.     for(i = 0; i<n; i++) 
  20.     { 
  21.         p = (LinkList)malloc(sizeof(NODE));//生成新结点 
  22.         p->data = rand()%100+1;//随机生成100以内的数字 
  23.         p->next = (*L)->next;// 
  24.         (*L)->next = p;   //插入到表头 
  25.     } 
  26.   
  27.   
  28. /*插队的办法,始终让新结点在第一的位置。*/ 

  1. 二、单链表的整表创建的算法思路--尾插法 

  2. void CreateListTail(LinkList *L, int n)
  3. {
  4. LinkList p,r;
  5. int i;
  6. srand(time(0));//初始化随即种子
  7. *L = (LinkList)malloc(sizeof(NODE));
  8. r=*L;

  9. for(i = 0; i<n; i++)  {  
  10.    p = (LinkList)malloc(sizeof(NODE));//生成新结点 
  11.   p->data = rand()%100+1;//随机生成100以内的数字 
  12. r->next=p;
  13. r = p;   //r再次成为到表尾  
  14. r->next=null;
  15. }

  1. 三、单链表的整体删除
  2. Status ClearList(LinkList *L)
  3. {
  4. LinkList p,q;
  5. p=(*L)->next;
  6. while(p){
  7. q=p->next;
  8. free(p);
  9. p=q;
  10. }
  11. (*L)->next=NULL;
  12. return ok;
  13. }



0 0
原创粉丝点击