北大“數(shù)據(jù)結(jié)構(gòu)”上機(jī)考試復(fù)習(xí)題總結(jié)(1)

字號(hào):

數(shù)據(jù)結(jié)構(gòu)練習(xí)題1
    1.編一C程序,它能根據(jù)讀入的數(shù)據(jù)構(gòu)造有向圖G,并輸出G的鄰接矩陣和DFS遍歷序列(從V0開(kāi)始),圖的輸入形式為n Vi0 Vj0 Vi1 Vj1 Vi2 Vj2……Vim Vjm -1 -1(-1,-1為輸入結(jié)束標(biāo)記),它們都是整數(shù),且100>n>0,其余的值都>=0且    (注:程序的可執(zhí)行文件名必須是 e1.exe,存于你的賬號(hào)或其debug目錄下。)
    2. 編一C程序,它能讀入兩組整數(shù)(每組整數(shù)都以-9999為結(jié)束標(biāo)記,個(gè)數(shù)都不大于1000),并以從小到大的次序輸出既在第一組整數(shù)中而且不在第二組整數(shù)中的所有整數(shù)(同一個(gè)整數(shù)不能輸出兩次)。(輸入時(shí),兩個(gè)相鄰的整數(shù)用空格隔開(kāi))。
    (注:程序的可執(zhí)行文件名必須是 e2.exe,存于你的賬號(hào)或其debug目錄下。)
    數(shù)據(jù)結(jié)構(gòu)練習(xí)題2
    1.編一C程序,它能讀入兩組整數(shù)(每組整數(shù)都是66個(gè)整數(shù)),它們分別是下三角矩陣A和下三角矩陣B的按行優(yōu)先排列的元素(A和B的其它元素均為零)。計(jì)算并輸出矩陣A與B的乘積。
    (注:程序的可執(zhí)行文件名必須是 e1.exe,存于你的賬號(hào)或其debug目錄下。)
    #include
    #include
    void main()
    {
    int i,j, k1,k2,c[66],s,k,count=0,flag=0;
    int a[66];
    int b[66];
    printf(“請(qǐng)輸入66個(gè)數(shù)到a中:\n”);
    for(i=0;i<66;i++)
    scanf(“%d”,&a[i]);
    printf(“請(qǐng)輸入66個(gè)數(shù)到b中:\n”);
    for(i=0;i<66;i++)
    scanf(“%d”,&b[i]);
    for(i=0;i<11;i++){
    for(k=0;k<11;k++)
    {s=0;
    for(j=0;j<11&&i>=j;j++)
    k1=i*(i+1)/2+j;
    if(j>=k)
    k2=j*(j+1)/2+i;
    else
    continue;
    s+=a[k1]*b[k2];
    flag=1;
    }
    if(flag)
    {
    c[count++]=s;
    flag=0;
    }
    }
    for(i=0;i<66;i++)
    printf(“%d”,c[i]);
    }
    2.編一C程序,它能對(duì)輸入的一串整數(shù)(不多于1000個(gè),以-9999為結(jié)束標(biāo)記)到數(shù)組a中,再對(duì)a的元素進(jìn)行直接插入排序(從小到大排序),輸出排序結(jié)果和所用關(guān)鍵字比較次數(shù)。(輸入時(shí),兩個(gè)相鄰的整數(shù)用空格隔開(kāi))。
    (注:程序的可執(zhí)行文件名必須是 e2.exe,存于你的賬號(hào)或其debug目錄下。)
    #include
    #include
    void main()
    {
    int i,j, k1,k2,c[66],s,k,count=0,flag=0;
    int a[66];
    int b[66];
    printf(“請(qǐng)輸入66個(gè)數(shù)到a中:\n”);
    for(i=0;i<66;i++)
    scanf(“%d”,&a[i]);
    printf(“請(qǐng)輸入66個(gè)數(shù)到b中:\n”);
    for(i=0;i<66;i++)
    scanf(“%d”,&b[i]);
    for(i=0;i<11;i++){
    for(k=0;k<11;k++)
    {s=0;
    for(j=0;j<11&&i>=j;j++)
    k1=i*(i+1)/2+j;
    if(j>=k)
    k2=j*(j+1)/2+i;
    else
    continue;
    s+=a[k1]*b[k2];
    flag=1;
    }
    if(flag)
    {
    c[count++]=s;
    flag=0;
    }
    }
    for(i=0;i<66;i++)
    printf(“%d”,c[i]);
    }
    數(shù)據(jù)結(jié)構(gòu)練習(xí)題3
    1. 編一C程序,它能根據(jù)輸入的二叉樹(shù)前序和中序序列來(lái)構(gòu)造該二叉樹(shù),并能輸出該二叉樹(shù)的后序序列和該二叉樹(shù)葉的結(jié)點(diǎn)的個(gè)數(shù)以及該二叉樹(shù)高度。(輸入次序是:表示前序序列的字符串、表示中序序列的字符串)。
    (注:程序的可執(zhí)行文件名必須是 e1.exe,存于你的賬號(hào)或其debug目錄下。)
    #include
    #include
    #include
    void exit(int);
    #define MAX 100
    typedef struct node{
    char d;
    struct node *lchild,*rchild;
    }Tnode;
    void MKTree(char pre[],int pres,int pree,char in[],int is,int ie,Tnode **r)
    {
    int i;
    if(pres>pree||is>ie)
    *r=NULL;
    else{
    *r=malloc(sizeof(Tnode));
    for(i=is;i<=ie;i++)
    if(pre[pres]==in[i])
    {
    MKTree(pre,pres+1,pres+i-is,in,is,is+i-1,&(*r)->lchild);
    MKTree(pre,pres+i+is+1,pree,in,is+i+1,ie,&(*r)->rchild);
    break;
    }
    }
    }
    void postorder(Tnode *r)
    {
    if(r)
    {
    postorder(r->lchild);
    postorder(r->rchild);
    printf(“%c”,r->d);
    }
    }
    int num(Tnode *r)
    {
    if(r==NULL)
    return 0;
    else
    if(r->lchild==NULL&&r->rchild==NULL)
    return 1;
    else
    return num(r->lchild)+num(r->rchild);
    }
    int height(Tnode *r)
    {
    int h1,h2;
    if(r==NULL)
    return 0;
    else
    {
    h1=height(r->lchild);
    h2=height(r->rchild);
    return 1+(h1>h2)?h1:h2;
    }
    }
    void main()
    {
    Tnode *r;
    char pre[MAX],in[MAX];
    printf(“input preorder and inorder \n”);
    gets(pre);
    gets(in);
    MKTree(pre,0,strlen(pre)-1,in,0,strlen(in)-1,&r);
    printf(“The postorder is as follow:\n”);
    postorder(r);
    printf(“\n there are %d leaves in the tree\n”,num(r));
    printf(“h=%d\n”,height(r));
    }
    2.編一C程序,它能讀入一串(n個(gè))整數(shù)(以-9999為結(jié)束標(biāo)記),并判斷第1個(gè)整數(shù)在后(n-1)個(gè)整數(shù)中出現(xiàn)的次數(shù),再輸出該次數(shù)。(輸入時(shí),兩個(gè)相鄰的整數(shù)用空格隔開(kāi))。
    (注:程序的可執(zhí)行文件名必須是 e2.exe,存于你的賬號(hào)或其debug目錄下。)