<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 名企招聘c++程序員筆試題

    時間:2024-10-18 09:27:46 面試筆試 我要投稿
    • 相關推薦

    名企招聘c++程序員筆試題

    (一) 

      單向鏈表的反轉是一個經常被問到的一個面試題,也是一個非;A的問題。比如一個鏈表是這樣的: 1->2->3->4->5 通過反轉后成為5->4->3->2->1。

    名企招聘c++程序員筆試題

      最容易想到的方法遍歷一遍鏈表,利用一個輔助指針,存儲遍歷過程中當前指針指向的下一個元素,然后將當前節點元素的指針反轉后,利用已經存儲的指針往后面繼續遍歷。源代碼如下:

      struct linka {

      int data;

      linka* next;

      };

      void reverse(linka*& head) {

      if(head null)

      return;

      linka *pre, *cur, *ne;

      pre=head;

      cur=head->next;

      while(cur)

      {

      ne = cur->next;

      cur->next = pre;

      pre = cur;

      cur = ne;

      }

      head->next = null;

      head = pre;

      }

      還有一種利用遞歸的方法。這種方法的基本思想是在反轉當前節點之前先調用遞歸函數反轉后續節點。源代碼如下。不過這個方法有一個缺點,就是在反轉后的最后一個結點會形成一個環,所以必須將函數的返回的節點的next域置為null。因為要改變head指針,所以我用了引用。算法的源代碼如下:

      linka* reverse(linka* p,linka*& head)

      {

      if(p null || p->next null)

      {

      head=p;

      return p;

      }

      else

      {

      linka* tmp = reverse(p->next,head);

      tmp->next = p;

      return p;

      }

      }

     、谝阎猻tring類定義如下:

      class string

      {

      public:

      string(const char *str = null); // 通用構造函數

      string(const string &another); // 拷貝構造函數

      ~ string(); // 析構函數

      string & operater =(const string &rhs); // 賦值函數

      private:

      char *m_data; // 用于保存字符串

      };

      嘗試寫出類的成員函數實現。

      答案:

      string::string(const char *str)

      {

      if ( str null ) //strlen在參數為null時會拋異常才會有這步判斷

      {

      m_data = new char[1] ;

      m_data[0] = '''' ;

      }

      else

      {

      m_data = new char[strlen(str) + 1];

      strcpy(m_data,str);

      }

      }

      string::string(const string &another)

      {

      m_data = new char[strlen(another.m_data) + 1];

      strcpy(m_data,other.m_data);

      }

      string& string::operator =(const string &rhs)

      {

      if ( this &rhs)

      return *this ;

      delete []m_data; //刪除原來的數據,新開一塊內存

      m_data = new char[strlen(rhs.m_data) + 1];

      strcpy(m_data,rhs.m_data);

      return *this ;

      }

      string::~string()

      {

      delete []m_data ;

      }

      1.求下面函數的返回值(微軟)

      int func(x)

      {

      int countx = 0;

      while(x)

      {

      countx ++;

      x = x&(x-1);

      }

      return countx;

      }

      假定x = 9999。 答案:8

      思路:將x轉化為2進制,看含有的1的個數。

      2. 什么是“引用”?申明和使用“引用”要注意哪些問題?

      答:引用就是某個目標變量的“別名”(alias),對應用的操作與對變量直接操作效果完全相同。申明一個引用的時候,切記要對其進行初始化。引用聲明完畢后,相當于目標變量名有兩個名稱,即該目標原名稱和引用名,不能再把該引用名作為其他變量名的別名。聲明一個引用,不是新定義了一個變量,它只表示該引用名是目標變量名的一個別名,它本身不是一種數據類型,因此引用本身不占存儲單元,系統也不給引用分配存儲單元。不能建立數組的引用。

      3. 將“引用”作為函數參數有哪些特點?

      (1)傳遞引用給函數與傳遞指針的效果是一樣的。這時,被調函數的形參就成為原來主調函數中的實參變量或對象的一個別名來使用,所以在被調函數中對形參變量的操作就是對其相應的目標對象(在主調函數中)的操作。

      (2)使用引用傳遞函數的參數,在內存中并沒有產生實參的副本,它是直接對實參操作;而使用一般變量傳遞函數的參數,當發生函數調用時,需要給形參分配存儲單元,形參變量是實參變量的副本;如果傳遞的是對象,還將調用拷貝構造函數。因此,當參數傳遞的數據較大時,用引用比用一般變量傳遞參數的效率和所占空間都好。

    【名企招聘c++程序員筆試題】相關文章:

    名企招聘有新招02-18

    了解名企的招聘渠道02-28

    名企面試題02-18

    名企面試試題——戴爾02-18

    名企刁鉆面試題02-19

    名企招聘者評點面試問題02-18

    武漢:20家名企取消在高校招聘02-28

    名企面試試題 面試題目 Google02-24

    不可不知的中外名企招聘標準02-27

    普天C++筆試題02-18

    主站蜘蛛池模板: 精品一久久香蕉国产线看播放 | 亚洲午夜精品一级在线播放放| 国产久热精品无码激情| 国产精品九九久久免费视频 | 日本午夜精品理论片A级APP发布| 国产精品莉莉欧美自在线线| 亚洲av无码乱码国产精品fc2| 精品午夜福利1000在线观看| 精品999久久久久久中文字幕 | 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 久久精品成人欧美大片| 91精品福利在线观看| 伊人精品久久久久7777| 国产精品一区12p| 欧美国产日韩精品| 99精品在线观看| 精品国产一区二区三区无码| 亚洲精品亚洲人成在线观看下载| 国産精品久久久久久久| 99久久www免费人成精品| 国产成人久久精品区一区二区| 精品无码av一区二区三区| 自拍中文精品无码| 亚洲国产精品一区二区第四页 | 国产福利91精品一区二区三区| 久久精品国产亚洲av影院| 亚洲综合无码精品一区二区三区| 四虎影视永久在线精品| 青草国产精品视频。| 久久久精品人妻无码专区不卡 | 国产精品久久久久乳精品爆 | 97精品一区二区视频在线观看| 久久99精品国产麻豆| 日韩人妻无码精品久久久不卡| 中文成人无码精品久久久不卡 | 久久久久成人精品无码 | 久久久久人妻精品一区三寸蜜桃| 国产精品哟女在线观看| 国产精品永久免费视频| 精品国产黑色丝袜高跟鞋| 精品一区二区三区免费视频|