面经

1 已知有一个单向链表,有一个指针p,指向该链表中的非结尾的某个节点,要求将该节点从链表中删除,请问,可以做到吗?说的明白些就是,只有一个指针p指向该链表,且删除该节点后,还要确保该单向链表的完整,我个人认为无法做到

 

从p出发将后面节点的数据统一向前面得一个节点覆盖,再删除最后一个节点即可。

 

上面的方法比较笨。

还有一种方法是:把给节点后面的节点拷贝到该节点,然后删除后面的节点。

 

 

 

  2  约瑟夫环问题(Josephus)
http://www.cnblogs.com/EricYang/archive/2009/09/04/1560478.html

 

http://hi.baidu.com/ren_jian_ke/blog/item/88b6714246cffa1973f05dd7.html

 

 

3 输出{1, 2, 3, ..., n}所有子集。

遍历方法,需要一个队列,保存最后需要输出的序列。每个数字,有两种选择,输出,或者不输出。

队列a

 

void f(int n)

{

     if (  n == 1  )

     {

            do ouput a,           outpu 1,

 

             do ouput a,

             return ;

     }

 

     a.push n   

     f( --n)

 

    a.pop n

    f(--n)

}

 

 

 

我想到的方法2

令,i, 从0 -  2^n 次方,  

i 的二进制表示中 第几位是1,则输出几。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值