亚洲福利精品久久久久91|中文字幕乱码视频网|在线播放国产精品一区二区|亚洲成AV人片女在线观看

  • <label id="nsftt"></label>

          <bdo id="nsftt"></bdo>
              <object id="nsftt"><tt id="nsftt"><pre id="nsftt"></pre></tt></object>

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

              思而思學(xué)網(wǎng)

              下面這套筆試題是2015騰訊校園招聘C語言常考知識(shí)點(diǎn),分享給大家了解。
              1. 輸入一個(gè)鏈表的頭結(jié)點(diǎn),從尾到頭反過來輸出每個(gè)結(jié)點(diǎn)的值。鏈表結(jié)點(diǎn)定義如下:

              struct ListNode

              {

              int m_nKey;

              ListNode m_pNext;

              };

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

              (任意實(shí)現(xiàn)一種既可)

              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);本文由論文聯(lián)盟http://www.LWlm.COM收集整理

              while(!IsEmpty(&s))

              {

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

              }

              }

              2. 二元樹的深度

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

              #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. 整數(shù)的二進(jìn)制表示中1的個(gè)數(shù)

              題目:輸入一個(gè)整數(shù),求該整數(shù)的二進(jìn)制表達(dá)中有多少個(gè)1。例如輸入10,由于其二進(jìn)制表示為1010,有兩個(gè)1,因此輸出2。

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

              int Bit1inInt(int i)

              {

              int result=0;

              do{

              result+=i&1;

              }while(i=i>>1);

              return result;

              }

              4. 從上往下遍歷二元樹

              題目:輸入一顆二元樹,從上往下按層打印樹的每個(gè)結(jié)點(diǎn),同一層中按照從左往右的順序打印。

              (先序,中序,后序三種方式實(shí)現(xiàn))

              如果從上往下,從左到右的話只有一種遍歷的方式:廣度優(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[1];

              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. 查找鏈表中倒數(shù)第k個(gè)結(jié)點(diǎn)

              題目:輸入一個(gè)單向鏈表,輸出該鏈表中倒數(shù)第k個(gè)結(jié)點(diǎn)。鏈表的倒數(shù)第0個(gè)結(jié)點(diǎn)為鏈表的尾指針。鏈表結(jié)點(diǎn)定義如下:

              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. 求三角形面積

              給出三角形的三個(gè)邊長為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;

              }

              }

              熱門推薦

              最新文章