阅读下列程序说明,将在空缺处填入正确的内容。
(程序说明)
定义一个多边形结构:struct polygon实现以下内容: (1) 建立该结构的链表:create函数是创建链表,每输入一个结点的数据,就把该结点加入到链表当中,它返回创建的链表的头指针。 (2) 显示链表的各个结点数据:结点数据包括:多边形顶点数、各顶点的纵横坐标、当多边形顶点数为0时,链表创建结束。 (3) 编写一个函数disp,删除链表中的所有结点。需要注意的是:要先释放结点数据内存,再删除结点,如果在释放结点数据内存单元之前删除结点,则无法找到结点数据内存单元的地址,也就无法释放数据的内存单元。
(程序)
#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<<"请输入多边形各顶点x、y坐标,坐标值之间用空格分隔:";
cin>>newNode->x[i]>>newNode->y[i];}(4) =head;// 在head前不需要额外的*
head=newNode;
}
polygon *create()
{
polygon*head=NULL;
polygon*tail;
int n;
cout<<"请输入多边形顶点的个数(顶点个数为0时结束):";
cin>>n;
if(n==0)return (5) ;
Push(head, (6) ;
tail=head;
cout<<"请输入多边形顶点的个数(顶点个数为0时结束):";
cin>>n;
while(n!=0)
{
Push(tail->next, (7) ;//在tail->next增加结点
tail=tail->next;//advance tail to point to last node
cout<<"请输入多边形顶点的个数(顶点个数为0时结束):";
cin>>n;
}
return head;
}
void disp(polygon*head)
{
int i,No=1;
cout<<setw (10) <<"x"<<setw (6) <<"y"<<endl;
while(head!=NULL)
{
cout<<"第"<<No<<"结点:"<<endl;
for(i=0;i<=head->n-1;i++)
cout<<setw (10) <<head->x[i]<<setw (6) <<head->y[i]<<endl;(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);
}
[试题]试题四阅读下列程序说明和C程序,将应填入(n)处的字句写在答卷纸的对应栏内。(程序说明)该程序定义了两个子函数strsort和strmerge。它们分别实现了将一个字符串按字母顺序排序和将两个字符串合并排序,并删去相同字符。在主函数里,先输入两个字符串s1和s2,然后调用strsort函数对它们分别排序,然后调用strmerge函数将s1和s2合并,将合并后的字符串赋给字符串s3,最后输出字符串s3。(程序)#include<stdio.h>void strmerge(char*a,c
[试题]试题五阅读下列程序说明,将应填入(n)处的字句写在答卷纸的对应栏内。(程序说明)对于一个公司的雇员来说,无非有3种:普通雇员、管理人员和主管。这些雇员有共同的数据:名字、每小时的工资,也有一些共同的操作:数据成员初始化、读雇员的数据成员及计算雇员的工资。但是,他们也有不同。例如,管理人员除有这些共同的特征外,有可能付固定薪水,主管除有管理人员的共同特征外,还有其他物质奖励等。3种雇员中,管理人员可以看作普通雇员的一种,而主管又可以看作管理人员的一种。我们很容易想到使用类继承来实现这个问题:普通雇员
[试题]试题五阅读下列程序说明和C程序,将应填入程序中(n)处的字句,写在答卷纸的对应栏内。(程序说明)本程序先从文件读入各考生的准考证号(设为整型数)及成绩,并将其存放在一棵检索二叉树上,二叉树结点的健值是成绩,每个结点带一链表,链表结点存放取得该成绩的考生的准考证号。然后,程序按中序遍历检索二叉树,从高分到低分输出结果,使每行输出成绩及其取得成绩的考生的准考证号。(程序)#include <stdio.h>typedef struct idnode {int id;struct idnod
[试题]试题四阅读下列程序说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。(说明)本程序从若干个原始文件合并成的合并文件中恢复出其中一个或全部原始文件。所有文件均作为二进制文件进行处理。合并文件中先顺序存储各原始文件,然后顺序存储各原始文件的控制信息,即文件名、文件长度和在合并文件中的位置(偏移量 )。其结构为:typedef struct{char fname [256]/*原始文件名*/long length;/*原始文件长度(字节数)*/long offset;/*原始文件在合并文件中的位
[试题]试题四阅读下列程序说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。(程序4.1说明)"背包问题"的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为w1,w2,..,wn,希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于S。如下程序均能求得"背包问题"的一组解,其中程序4.1是"背包问题"的递归解法,而程序4.2是"背包问题"的非递归解法。(程序4.1)#include<stdio.h>#def
[试题]阅读下列程序说明和C代码,将应填入(n)处。(程序5说明)著名的四色定理指出任何平面区域图均可用四种颜色着色,使相邻区域着不同的颜色。本程序对给定的区域图找出所有可能的不超过四种颜色的着色方案。程序中用1~4表示四种颜色。要着色的N个区域用0~N-1编号,区域相邻关系用 adj[][]矩阵表示,矩阵的i行j列的元素为1,表示区域i与区域j相邻;矩阵的i行j列的元素为0,表示区域i与区域j不相邻。数组color[]用来存储着色结果,color[i]的值为区域i所着颜色。(程序5)include<st
[主观题]阅读下列程序说明和C程序,把应填入其中(n)处的字句,写在对应栏内。(程序说明)已知某二叉树的前序遍历和中序遍历序列,可以得到该二叉树的结构。本程序实现了根据这两个遍历序列生成一棵链接表示的二叉树。构造二叉树的算法要点是:由前序遍历序列,该序列的第一个元素是根结点元素。该元素将中序遍历序列分成左、右两部分,那些位于该元素之前的元素是它的左子树上的元素,位于该元素之后的元素是它的右子树上的元素。对于左、右子树,由它们的前序遍历序列的第一个元素可确定左、右子树的根结点,参照中序遍历序列又可进一步确定
[试题]试题六阅读下列程序说明和C++代码,将应填入(n)处的字句写在答卷的对应栏内。(程序6说明)本程序实现两个多项式的乘积运算。多项式的每一项由类Item描述,而多项式由类List描述。类List的成员函数有:createList():创建按指数降序链接的多项式链表,以表示多项式。reverseList():将多项式链表的表元链接顺序颠倒。multiplyList(List L1,List L2):计算多项式L1和多项式L2的乘积多项式。(程序6)#include<iostream.h>c
[试题]试题六阅读下列程序说明和C++代码,将应填入(n)处的字句写在答卷的对应栏内。(说明)①为类Circle增加一个构造函数,该函数有一个参数,并在构造时将该参数值赋给成员radius。将该函数实现为一个非内联函数,并且使用参数列表的方式将类成员赋值。②为类Circle增加一个成员函数print(),使得可以输出有关圆的信息,比如下列程序C.ircle c;C.SetRadius (5) ;C.Print();将输出:The circle has radius of 5!③完成友元函数void Com
[试题]试题五阅读下列程序说明和C++代码,将应填入(n)处的字句写在答卷的对应栏内。(说明)①定义类Table的私有数据成员x和y,分别用于表示九九表中的两个乘数(x*y),它们都是int型的数据。②完成类Table的成员函数print()的定义,该函数以"x*y=z"的格式打印出九九表中的一个乘法算式,请使用格式化输出函数printf实现。③完成类Table9的成员函数print()的定义,该函数调用基类Table的print()函数,将九九表输出到屏幕。④补充主函数,在屏幕上输出九九表,以便测试