微软的22道数据结构算法面试题

来源:微软认证    发布时间:2012-11-08    微软认证视频    评论

  1、反转一个链表。循环算法。

  1     List   reverse(List   l)   {

  2     if(!l)   return   l;

  3         list   cur   =   l.next;

  4     list   pre   =   l;

  5     list   tmp;

  6     pre.next   =   null;

  7     while   (   cur   )   {

  8         tmp   =   cur;

  9         cur   =   cur.next;

  10         tmp.next   =   pre

  11         pre   =   tmp;

  12     }

  13     return   tmp;

  14   }

  2、反转一个链表。递归算法。

  1     List   resverse(list   l)   {

  2     if(!l   ||   !l.next)   return   l;

  3

  4         List   n   =   reverse(l.next);

  5         l.next.next   =   l;

  6         l.next=null;

  7     }

  8     return   n;

  9   }

  3、广度优先遍历二叉树。

  1     void   BST(Tree   t)   {

  2     Queue   q   =   new   Queue();

  3     q.enque(t);

  4     Tree   t   =   q.deque();

  5     while(t)   {

  6         System.out.println(t.value);

  7         q.enque(t.left);

  8         q.enque(t.right);

  9         t   =   q.deque();

  10     }

  11   }

  ----------------------

  1class   Node   {

  2     Tree   t;

  3     Node   next;

  4   }

  5class   Queue   {

  6     Node   head;

  7     Node   tail;

  8     public   void   enque(Tree   t){

  9         Node   n   =   new   Node();

  10         n.t   =   t;

  11         if(!tail){

  12             tail   =   head   =   n;

  13         }   else   {

  14         tail.next   =   n;

  15         tail   =   n;

  16         }

  17     }

  18     public   Tree   deque()   {

  19         if   (!head)   {

  20                 return   null;

  21         }   else   {

  22         Node   n   =   head;

  23         head   =   head.next;

  24       return   n.t;

  25         }

  26}

  4、输出一个字符串所有排列。注意有重复字符。

  1char[]   p;

  2void   perm(char   s[],   int   i,   int   n){

  3   int   j;

  4   char   temp;

  5   for(j=0;j<n;++j){

  6     if(j!=0   &&   s[j]==s[j-1]);

  7     elseif(s[j]!='@'){

  8       p[i]=s[j];

  9       s[j]='@';

  10       if(i==n-1){

  11         p[n]='/0';

  12         printf("%s",   p);

  13       }else{

  14         perm(s,i+1,n);

  15       }

  16       s[j]=p[i];

  17     }

  18   }

  19}

  --------------------------

  1void   main()   {

  2     char   s[N];

  3     sort(s);

  4     perm(s,0,strlen(s));

  5}

上一页1234下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答