2016年計(jì)算機(jī)軟件設(shè)計(jì)師程序模擬題

字號(hào):

●試題四
    閱讀下列程序說明,將在空缺處填入正確的內(nèi)容。
    【程序說明】
    定義一個(gè)多邊形結(jié)構(gòu):struct polygon實(shí)現(xiàn)以下內(nèi)容: (1) 建立該結(jié)構(gòu)的鏈表:create函數(shù)是創(chuàng)建鏈表,每輸入一個(gè)結(jié)點(diǎn)的數(shù)據(jù),就把該結(jié)點(diǎn)加入到鏈表當(dāng)中,它返回創(chuàng)建的鏈表的頭指針。 (2) 顯示鏈表的各個(gè)結(jié)點(diǎn)數(shù)據(jù):結(jié)點(diǎn)數(shù)據(jù)包括:多邊形頂點(diǎn)數(shù)、各頂點(diǎn)的縱橫坐標(biāo)、當(dāng)多邊形頂點(diǎn)數(shù)為0時(shí),鏈表創(chuàng)建結(jié)束。 (3) 編寫一個(gè)函數(shù)disp,刪除鏈表中的所有結(jié)點(diǎn)。需要注意的是:要先釋放結(jié)點(diǎn)數(shù)據(jù)內(nèi)存,再刪除結(jié)點(diǎn),如果在釋放結(jié)點(diǎn)數(shù)據(jù)內(nèi)存單元之前刪除結(jié)點(diǎn),則無法找到結(jié)點(diǎn)數(shù)據(jù)內(nèi)存單元的地址,也就無法釋放數(shù)據(jù)的內(nèi)存單元。
    【程序】
    #include"iostream.h"
    #include"iomanip.h"
    struct polygon
    {
    int n;
    int *x;
    int *y;
    polygon *next;
    };
    void Push(polygon*& head,int n)
    {
    polygon*newNode=new polygon;
    newNode=new polygon;
    newNode->next= (1) ;
    newNode->x=new int[n];newNode->y=new int[n];newNode->n= (2) ;
    for(int i=0;i<= (3) ;i++){
    cout<<"請(qǐng)輸入多邊形各頂點(diǎn)x、y坐標(biāo),坐標(biāo)值之間用空格分隔:";
    cin>>newNode->x[i]>>newNode->y[i];}
    (4) =head;// 在head前不需要額外的*
    head=newNode;
    }
    polygon *create()
    {
    polygon*head=NULL;
    polygon*tail;
    int n;
    cout<<"請(qǐng)輸入多邊形頂點(diǎn)的個(gè)數(shù)(頂點(diǎn)個(gè)數(shù)為0時(shí)結(jié)束):";
    cin>>n;
    if(n==0)return (5) ;
    Push(head, (6) ;
    tail=head;
    cout<<"請(qǐng)輸入多邊形頂點(diǎn)的個(gè)數(shù)(頂點(diǎn)個(gè)數(shù)為0時(shí)結(jié)束):";
    cin>>n;
    while(n!=0)
    {
    Push(tail->next, (7) ;//在tail->next增加結(jié)點(diǎn)
    tail=tail->next;//advance tail to point to last node
    cout<<"請(qǐng)輸入多邊形頂點(diǎn)的個(gè)數(shù)(頂點(diǎn)個(gè)數(shù)為0時(shí)結(jié)束):";
    cin>>n;
    }
    return head;
    }
    void disp(polygon*head)
    {
    int i,No=1;
    cout<
    while(head!=NULL)
    {
    cout<<"第"<
    for(i=0;i<=head->n-1;i++)
    cout    (8) ;
    head= (9) ;
    }//Match while statement
    }
    void del(polygon*head)
    {
    polygon*p;
    while(head!=NULL)
    {
    p= (10) ;
    head=head->next;
    delete p->x;
    delete P->y;
    deletep;
    }//Match while statement
    }
    void main()
    {
    polygon*head;
    head=create();
    disp(head);
    del(head);
    }