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

<thead id="tzpj5"></thead>
  • <cite id="tzpj5"><listing id="tzpj5"></listing></cite>
    <strike id="tzpj5"><option id="tzpj5"><td id="tzpj5"></td></option></strike>

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

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

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

    struct ListNode

    {

    int m_nKey;

    ListNode m_pNext;

    };

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

    (任意實現(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é)點,求該樹的深度。從根結(jié)點到葉結(jié)點依次經(jīng)過的結(jié)點(含根、葉結(jié)點)形成樹的一條路徑,最長路徑的長度為樹的深度。

    #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ù)的二進制表示中1的個數(shù)

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

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

    int Bit1inInt(int i)

    {

    int result=0;

    do{

    result+=i&1;

    }while(i=i>>1);

    return result;

    }

    4. 從上往下遍歷二元樹

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

    (先序,中序,后序三種方式實現(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個結(jié)點

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

    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;

    }

    }

    熱門推薦

    最新文章