• C數據結構面試題 以及答案

    時間:2022-07-13 14:03:56 面試 我要投稿
    • 相關推薦

    C數據結構面試題 以及答案

    做了這么多年java,做java偏向于應用,都用別人的插件和jar包,F在面臨畢業,大公司技術筆試離不開數據結構,整理了下別人的題目。然后自己做了下。寫這里留紀念,也希望對大家有幫助!
    程序都在MinGW上跑通,VC我不知道。。
    1.把一個鏈表反向
    #include

    C數據結構面試題 以及答案

    typedef   struct   List
    {   
    int num;
    struct List *next;
    }test;
    test *create_list()
    {
    test *head;
    test *first;
    test *temp =NULL;
    first=head=new test;
    for(int i=0;i<10;i++)
    {
    head->num=i;
    temp=new test; //偷懶,用C++的new了,C用內存分配函數
    head->next=temp;
    temp->next=NULL;
    head=temp;
    }
    return&#160;&#160; first;
    }
    void print(test *head)
    {
    while(head->next!=NULL)
    {
    printf("%d ",head->num);
    head=head->next;
    }
    }
    test *change_list(test *head)
    {
    test *temp,*sixer;
    temp=head->next;
    head->next=NULL;
    while(temp->next!=NULL)
    {
    sixer=temp->next;
    temp->next=head;
    printf("%d-head-",temp->num);
    head=temp;
    temp=sixer;
    printf("%d-temp-",temp->num);
    }
    temp->next=head;
    return temp;
    }

    int&#160;&#160; main()
    {
    test *onelist;
    onelist = create_list();
    print(onelist);
    onelist = change_list(onelist);
    print(onelist);
    }
    2.&#160; 一個二叉樹的三種遍歷方法的輸出結果
    前序遍歷,先根接點。中序,根左邊的根右邊的,例子:
    abdgcefh,中序遍歷訪問順序是dgbaechf,則其后續遍歷的結點訪問順序是
    a為根,dgb為左子樹,echf為右子樹
    接下來看左子樹的前序遍歷為bdg
    b首先被訪問
    可以知道b為左子樹的根,與a相連
    再看左子樹的中序遍歷dgb
    d和g都在b之前就被訪問
    所以b和g應該在b的左子樹上
    而dg的確定再根據前序遍歷
    d先被訪問
    則d為根
    再看中序遍歷也是d先被訪問
    可以確定g為d的右子樹
    左邊就可以確定出來了
    如果上面看懂了
    右邊就很簡單,一樣的道理
    前序遍歷cefh
    確定c為右子樹的根
    再看中序遍歷echf
    e為c的左子樹,hf為c的右子樹
    hf的確定在看前序遍歷f先被訪問
    f為根
    中序遍歷h先被訪問
    h為f的左子樹
    整棵樹就出來了
    3.
    希表和數組的定義,區別,優缺點

    百度
    4.遞歸的折半查找算法
    #include

    using namespace std;
    void creat(int a[])
    {
    for(int i=0;i<10;i++){
    a[i]=i;
    }
    }
    void print(int a[])
    {
    for(int i=0;i<10;i++){
    printf("%d-",a[i]);
    }
    }
    int Search(int a[],int key,int left ,int right)
    {
    int mid;&#160;
    while(left<=right){&#160;
    mid = (left+right)/2;&#160;
    if(key==a[mid]){&#160;
    return mid;&#160;
    }&#160;
    else if(keyright = mid-1;&#160;
    return Search(a,key,left,right);&#160;
    }&#160;
    else{&#160;
    left = mid+1;&#160;
    return Search(a,key,left,right);&#160;
    }&#160;
    }&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    return -1;&#160;&#160;
    }

    int main()
    {
    int a[10];
    int i;
    creat(a);
    print(a);
    int key;
    cin>>key;
    int left = 0;&#160;
    int right = 10;&#160;
    i=Search(a,key,left,right);
    printf("%d->%d",i,a[i]);
    return 1;
    }
    5.sizeof()和strlen()的使用.
    sizeof比特字節數長度。strlen長度比如char a[2]={1,2} 嗎sizeof是2,strlen是3包括了/0而且sizeof是可以測int a[]這種的int a[2]={1,2} 的sizeof是8.2個4字節int。

    【C數據結構面試題 以及答案】相關文章:

    經典C/C++面試題07-11

    c面試題08-04

    上海交通大學軟件工程專業C、C++、數據結構、電路系統以及離散結構的課件07-09

    華為C++/MFC面試題07-11

    軟件測試面試題及答案12-30

    某公司面試題及答案07-11

    元宵節的燈謎以及答案08-03

    已考面試題求答案07-11

    東坡畫扇閱讀原文以及答案08-04

    華為面試題C語言軟件工程師07-11

    黄频国产免费高清视频_富二代精品短视频在线_免费一级无码婬片aa_精品9E精品视频在线观看