51Testing软件测试论坛

标题: 最近遇到的面试题!!! [打印本页]

作者: chunli29    时间: 2007-3-2 15:11
标题: 最近遇到的面试题!!!
1)写一个函数,完成内存之间的拷贝。
2)给定一个单向链表中的头节点,将此单向链表逆序,即原来的头节点变成末节点。


谢谢大虾们了,急需这两个面试题答案!!!
作者: JaneGu    时间: 2007-3-3 23:44
标题: 回答第二个问题
单链表逆序有两种方法:第一种是再建一个新链表,拷贝原链表内容,往前插入新链表。这种方法要耗内存空间。
第二种方法就是在原链表上改指针指向。我用C语言写了一段供参考。
if (head<>NULL)
{
  p = head;
  q = p->next;
  
  if (q->next == NULL)
  {
    p->next = NULL;
    q->next = p;
    head = q;
  }
  else
  {
    While (q->next<>NULL)
    {
      if (p == head)
        p->next = NULL;
      head = q->next;
      q->next = p;
      p = q;
      q = head;
    }
  }
}
作者: g_win    时间: 2007-3-4 10:30
看来lz是在编程方面较欠缺,恶补一下就应该能很快写出来了
作者: guolm1225    时间: 2007-3-5 09:44
全是考得烂的不能再烂的题目了,楼主真想面试的话,花点心思就一点问题都没有了
作者: Rosetan    时间: 2007-3-5 15:04
google一下,答案就有了。
作者: archonwang    时间: 2007-3-5 16:10
标题: C写的
1)写一个函数,完成内存之间的拷贝。


答:
void* mymemcpy( void *dest, const void *src, size_t count )
{
    char* pdest = static_cast<char*>( dest );
    const char* psrc = static_cast<const char*>( src );
    if( pdest>psrc && pdest<psrc+cout ) 能考虑到这种情况就行了
    {
        for( size_t i=count-1; i!=-1; --i )
                pdest = psrc;
    }
    else
    {
        for( size_t i=0; i<count; ++i )
            pdest = psrc;
    }
    return dest;
}
int main( void )
{
    char str[] = "0123456789";
    mymemcpy( str+1, str+0, 9 );
    cout << str << endl;

    system( "Pause" );
    return 0;
}
作者: hanxing520    时间: 2007-3-6 09:37
标题: 牛人
各位真是牛人啊....佩服...
作者: disparaitre    时间: 2007-3-6 21:50
第二题想到一个笨办法,做个堆栈,全压进去,再全弹出来,就反过来了
方法笨了点




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2