日韩亚洲专区中文字幕|五月天国产精品免费视频|中文字幕乱码亚州无线码二区|亚洲中文免费AV

<ul id="eu2wk"><blockquote id="eu2wk"></blockquote></ul>
  • <td id="eu2wk"><code id="eu2wk"></code></td>

    當前位置:高考升學網 > 招聘筆試題 > 正文

    2019騰訊校園招聘C語言筆試題和面試題答案

    更新:2023-09-17 16:56:33 高考升學網

      下面這套筆試題是2015騰訊校園招聘C語言?贾R點,分享給大家了解。
      1. 輸入一個鏈表的頭結點,從尾到頭反過來輸出每個結點的值。鏈表結點定義如下:

      struct ListNode

      {

      int m_nKey;

      ListNode m_pNext;

      };

      A: 遞歸方法逆序輸出,棧方法逆序輸出。

      (任意實現一種既可)

      void PrintListUsingRecursicve(pListNode head)

      {

      if(head!=NULL)

      {

      PrintListUsingRecursicve(head->m_pNext);

      printf("%d/n",head->m_nKey);

      }

      }

      void PrintListUsingStack(pListNode head)

      {

      Stack s;

      s.top=0;

      pListNode p=head;

      do{

      push(&s,p->m_nKey);

      p=p->m_pNext;

      }while(p!=NULL);本文由論文聯盟http://www.LWlm.COM收集整理

      while(!IsEmpty(&s))

      {

      printf("%d/n",pop(&s));

      }

      }

      2. 二元樹的深度

      題目:輸入一棵二元樹的根結點,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。

      #include

      #include

      #include

      #include

      #define MAXLEN 100

      #define MAXNUM 10

      typedef int Tree[MAXLEN];

      Tree bt;

      int GetDeep(int i)

      {

      int l=0,r=0;

      if(bt[i2]!=-1)

      {

      l=GetDeep(i2)+1;

      }

      if(bt[i2+1]!=-1)

      {

      r= GetDeep(i2+1)+1;

      }

      return l>r?l:r;

      }

      int main()

      {

      int i=0;

      memset(bt,-1,sizeof(bt));

      for(i=1;i<=MAXNUM;i++)

      bt[i]=i;

      bt[(i-1)2]=i2;

      printf("%d /n",GetDeep(1));

      return 0;

      }

      3. 整數的二進制表示中1的個數

      題目:輸入一個整數,求該整數的二進制表達中有多少個1。例如輸入10,由于其二進制表示為1010,有兩個1,因此輸出2。

      (關鍵是能不能想到后面的那個方法,只要想到這個方法既可)

      int Bit1inInt(int i)

      {

      int result=0;

      do{

      result+=i&1;

      }while(i=i>>1);

      return result;

      }

      4. 從上往下遍歷二元樹

      題目:輸入一顆二元樹,從上往下按層打印樹的每個結點,同一層中按照從左往右的順序打印。

      (先序,中序,后序三種方式實現)

      如果從上往下,從左到右的話只有一種遍歷的方式:廣度優(yōu)先遍歷。

      #include

      #include

      #include

      #include

      #define MAXLEN 100

      #define MAXNUM 10

      typedef int Tree[MAXLEN];

      Tree bt;

      typedef struct queue

      {

      int begin,end;

      int space[MAXLEN];

      }Queue;

      int main()

      {

      int i=0;

      memset(bt,-1,sizeof(bt));

      for(i=1;i<=MAXNUM;i++)

      bt[i]=i;

      Queue qe;

      qe.begin=0;qe.end =0;

      qe.space[qe.end++]=bt;

      while(qe.begin!=qe.end)

      {

      if(bt[2qe.space[qe.begin]]!=-1)//lchild

      {

      qe.space[qe.end++]=bt[2qe.space[qe.begin]];

      }

      if(bt[2qe.space[qe.begin]+1]!=-1)//rchild

      {

      qe.space[qe.end++]=bt[2qe.space[qe.begin]+1];

      }

      qe.begin++;

      }

      printf("--------------------/n");

      for(i=0;i

      printf("%d ",qe.space[i]);

      return 0;

      }

      先序,中序,后序三種方式的只是遍歷二元樹

      typedef int Tree[MAXLEN];

      Tree bt;

      void PreOrderTraverse(int i)

      {

      if(bt[i]==-1) {return ;}

      printf("%d ",bt[i]);

      PreOrderTraverse(i2);//lchild

      PreOrderTraverse(i2+1);//rchild

      }

      void InOrderTraverse(int i)

      {

      if(bt[i]==-1) {return ;}

      InOrderTraverse(i2);//lchild

      printf("%d ",bt[i]);

      InOrderTraverse(i2+1);//rchild

      }

      void PostOrderTraverse(int i)

      {

      if(bt[i]==-1) {return ;}

      PostOrderTraverse(i2);//lchild

      PostOrderTraverse(i2+1);//rchild

      printf("%d ",bt[i]);

      }

      int main()

      {

      int i=0;

      memset(bt,-1,sizeof(bt));

      for(i=1;i<=MAXNUM;i++)

      bt[i]=i;

      printf("/n---------------/n");

      PreOrderTraverse(1);

      printf("/n---------------/n");

      InOrderTraverse(1);

      printf("/n---------------/n");

      PostOrderTraverse(1);

      return 0;

      }

      5. 查找鏈表中倒數第k個結點

      題目:輸入一個單向鏈表,輸出該鏈表中倒數第k個結點。鏈表的倒數第0個結點為鏈表的尾指針。鏈表結點定義如下:

      struct ListNode

      {

      int m_nKey;

      ListNode m_pNext;

      };

      (最快的方法,只遍歷一遍)

      int FindCoundDownInList(pListNode head,int num)

      {

      pListNode p1,p2;

      p1=p2=head;

      while(num-->0 && p1!=NULL) p1=p1->m_pNext;

      if(p1==NULL) return 0;

      else{

      while(p1!=NULL)

      {

      p1=p1->m_pNext;

      p2=p2->m_pNext;

      }

      return p2->m_nKey;

      }

      }

      6. 求三角形面積

      給出三角形的三個邊長為a、b、c,求三角形的面積。

      (注意考慮是不是三角形)

      double GetArea(int a,int b,int c)

      {

      if(a-b>=c || a+b<=c)

      return -0.1;

      else{

      double s=0.5(a+b+c);

      double area=sqrt(s(s-a)(s-b)(s-c));

      return area;

      }

      }

    最新圖文

    2020年河北新聞網兩學一做

    時間:2023-09-18 07:0:24

    2020年河北新聞網兩學一做

    時間:2023-09-15 11:0:59

    兩學一做學習教育知

    時間:2023-09-21 06:0:30

    2020年開展兩學一做學習教

    時間:2023-09-19 21:0:30