中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      騰訊校園招聘C語言筆試題

      時間:2022-10-12 09:18:14 筆試題目 我要投稿
      • 相關推薦

      騰訊2014校園招聘C語言筆試題

        1. 輸入一個鏈表的頭結點,從尾到頭反過來輸出每個結點的值。鏈表結點定義如下:

      騰訊2014校園招聘C語言筆試題

        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);

        while(!IsEmpty(&s))

        {

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

        }

        }

        2. 二元樹的深度

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

        #include<stdio.h>

        #include<stdlib.h>

        #include<string.h>

        #include<time.h>

        #define MAXLEN 100

        #define MAXNUM 10

        typedef int Tree[MAXLEN];

        Tree bt;

        int GetDeep(int i)

        {

        int l=0,r=0;

        if(bt[i*2]!=-1)

        {

        l=GetDeep(i*2)+1;

        }

        if(bt[i*2+1]!=-1)

        {

        r= GetDeep(i*2+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]=i*2;

        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. 從上往下遍歷二元樹

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

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

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

        #include<stdio.h>

        #include<stdlib.h>

        #include<string.h>

        #include<time.h>

        #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[2*qe.space[qe.begin]]!=-1)//lchild

        {

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

        }

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

        {

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

        }

        qe.begin++;

        }

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

        for(i=0;i<qe.end;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(i*2);//lchild

        PreOrderTraverse(i*2+1);//rchild

        }

        void InOrderTraverse(int i)

        {

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

        InOrderTraverse(i*2);//lchild

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

        InOrderTraverse(i*2+1);//rchild

        }

        void PostOrderTraverse(int i)

        {

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

        PostOrderTraverse(i*2);//lchild

        PostOrderTraverse(i*2+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;

        }

        }

        7. 壓縮字符串

        例如字串”aaabbbbccccc”,轉換成相鄰字符+個數的形式壓縮,成為”a3b4c5”。

        (如果有10個數相同) 假設需要考慮解壓縮

        char *MergeString(const char * ch)

        {

        char *s=(char *)malloc(sizeof(ch));

        if(s!=NULL)

        {

        int len=strlen(ch), i=0,j=0,k=0;

        for(;i<len;i=j)

        {

        int num=0;

        while(ch[j]==ch[i]) j++,num++;

        s[k++]=ch[i];

        sprintf(s+k,"%d",num);

        k=strlen(s);

        }

        }

        return s;

        }

        8. 如何判斷一個單向鏈表是否有環。

        int ISCircle(pListNode head)

        {

        pListNode p1=head;

        p1=p1->m_pNext;

        while(p1!=NULL)

        {

        if(p1==head) return 1;

        else p1=p1->m_pNext;

        }

        return 0;

        }

        9. 判斷一個字符串是否對稱。

        aabbaa , efffe返回true

        aabac返回false

        int SymmetricString( const char *ch)

        {

        int len=strlen(ch);

        int i=0,j=len-1;

        if(len%2!=0) return 0;

        for(i=0,j=len-1;i<=len/2;i++,j--)

        {

        if(ch[i]!=ch[j]) return 0;

        }

        return 1;

        }

        10. 判斷一個字符串是否是另一個字符串的字串

        int next[20];

        void get_next(const char* T,int next[])

        {

        int i=0,j=-1;next[0]=-1;

        int len=strlen(T);

        while(i<len)

        {

        if(j==-1||T[i]==T[j]) {++i;++j;next[i]=j;}

        else j=next[j];

        }

        }

        int index_KMP(const char * S,const char * T)

        {

        int i=0,j=0;

        get_next(T,next);

        int lens=strlen(S),lent=strlen(T);

        while(i<lens &&j<lent){

        if(j==-1 ||S[i]==T[j]){++i;++j;}

        else j=next[j]; }

        if(j>=lent) return i-lent;

        else return -1;

        }

        鏈表的定義,棧的定義:

        typedef struct stack

        {

        int top;

        int space[MAXLEN+1];

        }Stack;

        int push(Stack *s,int num)

        {

        if(s->top>=sizeof(s->space)/sizeof(int)) return -1;//Error s->space[s->top++]=num;

        return num;

        }

        int pop(Stack *s)

        {

        if(s->top<0) return -1;

        return s->space[--s->top];

        }

        int IsEmpty(Stack *s)

        {

        return s->top==0;

        }

        typedef struct ListNode {

        int m_nKey;

        struct ListNode *m_pNext;

        }ListNode,*pListNode;

        pListNode CreateList()

        {

        srand((unsigned long)time(NULL));

        pListNode head,p1,p2;

        head=(pListNode)malloc(sizeof(ListNode));

        p1=head;p2=p1;

        int i=MAXLEN;

        while(i--){

        p2=(pListNode)malloc(sizeof(ListNode));

        p2->m_nKey= rand()*rand()%(MAXLEN*rand());

        p1->m_pNext=p2;

        p1=p2;

        }

        p2->m_pNext=NULL;

        return head;

        }

        void PrintList(pListNode head)

        {

        pListNode p=head;

        do{

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

        p=p->m_pNext;

        }while(p!=NULL);

        }

      【騰訊校園招聘C語言筆試題】相關文章:

      騰訊技術類校園招聘筆試試題(A8卷)11-21

      華為C語言筆試題12-12

      華為筆試題(C語言)12-10

      基礎C++/C語言筆試題分享11-21

      yahoo在線筆試題(c語言)12-12

      C語言筆試試題及答案07-31

      c語言筆試題目及答案08-17

      騰訊筆經11-28

      2015C語言筆試題及答案08-08

      計算機C語言試題及答案02-25

      主站蜘蛛池模板: 国产成人久久精品流白浆| 国产一级淫片a免费播放口| 横山县| 亚洲熟女乱综合一区二区三区 | 亚洲人成网站18男男| 木里| 午夜无码无遮挡在线视频| 超碰性爱| 丰满少妇a级黄片在线免费观看| 好看午夜一鲁一鲁一鲁| 超级碰碰人妻中文字幕| 女同性恋精品一区二区三区| 陕西省| 最新国产美女一区二区三区| av天堂吧手机版在线观看| 青青草免费激情自拍视频| 国产av一区二区三区丝袜| 国内少妇高潮嗷嗷叫在线观看 | 亚洲av日韩片在线观看| 日韩人妻少妇一区二区三区| 久久久精品中文字幕综合| 国产欧美日韩图片一区二区| 亚洲天堂无码AV一二三四区| 国产一级a爱做片一女多男| 亚洲av色香蕉一区二区蜜桃| 亚洲激情在线观看第三页| 日韩在线观看中文字幕一区二区| 天堂网av一区二区三区四区| 国产日韩av一区二区在线| 国产va在线播放| 日韩精品极品视频在线免费 | av东京热一区二区三区| 精品国产AⅤ一区二区三区V免费| 亚洲av色香蕉一区二区三区蜜桃 | 精品人一区二区三区伦蜜桃免费| 精品系列无码一区二区三区| 草莓视频在线观看无码免费| 欧美在线观看www| 凤山县| 国产视频网站一区二区三区| 亚洲中文字幕在线精品一区|