数据结构笔试题目

本文分享了数据结构相关的笔试题目,包括C++实现二叉树深度计算、排序二叉树节点插入、链表反转(递归与非递归)、双向链表操作以及二叉树遍历等。同时涉及排序算法的比较,如插入排序、快速排序和归并排序的效率分析,并探讨了获取值速度最快的结构——哈希表。最后提到了二分查找的概念及其编程实现。

1、C++编成求二叉树的深度;

 

int binTreeDepth(link *head){

   int depthl=0,depthr=0;

   if(head==null)

     return 0;

   else{

     if ((head->left)!=null)

       depthl = 1 + binTreeDepth(head->left);

     if ((head->right)!=null)   

       depthr = 1 + binTreeDepth(head->right);

     return depthl>depthr?depthl:depthr;

   }

}

2、排序二叉树插入一个节点或双向链表的实现

  排序二叉树:左小于根,根小于右。左右又分别是排序二叉树。

  前序遍历:根左右

  中序遍历:左根右

  后序遍历:左右根

  排序二叉树插入一个结点:大于左,往右找,小于右往左找,递归实现。

 

  public void insert(Root r, element e){

          if(r>e){

            if(r.left!=null){

               insert(r.left,e);

            }

            else

             r.left = e;

          }else if(r<=e){

            if(r.right!=null){

              insert(r.right, e);

            }

            else r.right = e;

          }

  }

3、把一个链表反向,递归,非递归都写一遍。

 非递归:

  inverse(link* head){

     link p,q,r;

     p =  head;

     q = p->next;

     r = q->next;

     head->next=null;

     while(p->next){

       q->next=p;

       p=q;

       q=r;

       if(r==null){

          head=q;

          break;

       }

       else

         r=r->next;

     }

  }

  递归:

  link* inverse(link* L){

    if(!L)||(!L->next){   

       return L;     

     }

    link h = inverse(L->next);

    L->next->next=L;

    return h;

  }

 

4、 试编写3个函数实现  
(1)建立一个双向链表  
(2)插入一个节点  
(3)删除一个节点 

  略

5、二叉树的前序遍历

  public void preOrder(BinararyTree b){

    printElement(b);

    preOrder(b.left());

    preOrder(b.right());

  }

6、下面哪种排序法对12354最快--插入排序应该最快。其次是快速排序,归并排序。
 a quick sort
 b.buble sort
 c.merge sort

  快速排序:有一个划分元素,该元素左边的所有元素都小于它,右边的所有元素都大于它。

  冒泡排序:依次比较相邻的两个数,将大数放在前面,小数放在后面。即首先比较第1个和第2个数,将大数放前,小数放后。这样一趟之后,最小的数就放在了最后面。

  归并排序:将两个有序的数列合并成一个

  希尔排序:基本思想:将整个无序序列分割成若干小的子序列分别进行插入排序。序列分割方法:将相隔某个增量h的元素构成一个子序列。在排序过程中,逐次减小这个增量,最后当h减到1时,进行一次插入排序,排序就完成。增量序列一般采用:ht=2t-1,1≤t≤[log2n],其中n为待排序序列的长度。

  堆排序:

  基数排序:

7、哪种结构,平均来讲,获取一个值最快 b
 a. binary tree
 b. hash table
  c. stack 

8、一个二叉树的三种遍历方法的输出结果

   前序,中序,后序。分别指根在前,中,后。答案略。

9、给两个变量,如何找出一个带环单链表中是什么地方出现环的

   两个指针,一个步长为1,一个步长为2,重合的地方就是环出现的地方。

10、哈希表和数组的定义,区别,优缺点

  哈希函数是一个映象,即:将关键字的集合映射到某个地址集合上,它的设置很灵活,只要这个地址集合的大小不超出允许范围即可。 
11、什么是二分法查找,编程实现。

   二分法查找针对有序数列。

   和中间的比较,小于往左,大于往右

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值