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,则输出几。