考试网 >> IT认证 >> 水平 >> 软件指导 >> 程序员数据结构笔记(三)

程序员数据结构笔记(三)

发布时间:2006-06-28 04:46     点击:
分页:上一页  1 2 3 4 5 6 [7] 8 9 10  下一页

   { p->num=0;

    p->ave=0; }

   else

   { (6) ;

    p->num=q->num+1;

    (7) ; }

   retuen p;

  }

  main()

  { Node *h; Back *p;

   h=create(); /*建立以h为头指针的链表*/

   if (h==NULL) printf("没有元素");

   else { p=aveage(h);

    printf("链表元素的均值为:%6f",p->ave);

   }

  }

四、希尔排序

  已知待排序序列data[n];希尔排序的增量序列为d[m],其中d[]序列降序排列,且d[m-1]=1。其方法是对序列进行m趟排序,在第i趟排序中,按增量d[i]把整个序列分成d[i]个子序列,并按直接插入排序的方法对每个子序列进行排序。

希尔排序的程序为:

  void shellsort(int *data,int *d,int n,int m)

  { int i,j;

   for (i=0;i<m;i++)

   for (j=0; (1) ;j++)

   shell( (2) );

  }

  void shell(int *data,int d,int num,int n)

  { int i,j,k,temp;

   for (i=1; (3) ;i++)

   { j=0;

    temp=data[j+i*d];

    while ((j<i)&&( (4) ))

    j++;

    for (k=j;k<i;k++)

     data[k+1]=data[k];

    (5) ;

    (6) }

  }

五、求树的宽度

  所谓宽度是指在二叉树的各层上,具有结点数最多的那一层上的结点总数。本算法是按层次遍历二叉树,采用一个队列q,让根结点入队列,最后出队列,若有左右子树,则左右子树根结点入队列,如此反复,直到队列为空。

  int Width(BinTree *T)

  { int front=-1,rear=-1; /* 队列初始化*/

   int flag=0,count=0,p;/*p用于指向树中层的最右边的结点,flag记录层中结点数的最大值。*/

   if(T!=Null)

   { rear++; (1) ; flag=1; p=rear;
分页:上一页  1 2 3 4 5 6 [7] 8 9 10  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有