北科大数据结构上机题代码

北科大数据结构上机题代码
北科大数据结构上机题代码

北科大数据结构上机题代码

《数据结构》上机题

1、输入数据建立单链表,并求相邻两节点data值之和为最大的第一节点。

例如输入:26473 0,建立:

所求结果=4 程序结构:

类型说明;

建表函数:Creatlist(L); 求值函数:Adjmax(L);

main( )

{ 变量说明;

调用Creatlist(L)建表;调用Adjmax(L)求值;

打印数据;释放链表空间;

Y

继续?

N

停止 } 上机题1:

#include #include typedef int datatype;

//设当前数据元素为整型 typedef struct node

//节点类型 { datatype data;

//节点的数据域

struct node *next;

//节点的后继指针域 }Linknode,*Link;

//linknode为节点说明符,link为节点指针说明符 Link Createlist()

//创建单链表的算法 { int a,c;float b; Link H,P,r;

//H,P,r分别为表头,新节点和表尾节点指针

H=(Link)malloc(sizeof(Linknode)); //建立头节点 r=H; do

{ c=(fflush(stdin),scanf(\ //判断输入的是否是整数

a=(int)b; if(c!=1||a!=b||a>-2^16||a-2^16||adata=a;

//存入数据 r->next=P;

//新节点链入表尾

r=P; do { c=(fflush(stdin),scanf(\ //判断输入的是否是

整数 a=(int)b; if(c!=1||a!=b||a>-2^16||a-2^16||anext=NULL;

//将尾节点的指针域置空 return(H);

//返回已创建的头节点 } Link Adjmax(Link H)

//求链表中相邻两节点data值之和为最大的第一节点的指针

的算法 { Link p,p1,q; int i,j; p=p1=H->next; if(p1==NULL) return(p1); //表空返回 q=p->next; if(q==NULL)

return(p1); //表长=1时返回 i=p->data+q->data;

//相邻两节点data值之和 while(q->next)

{ p=q;q=q->next;

//取下一对相邻节点的指针

j=p->data+q->data; if(j>i)

{

p1=p;

i=j;

//取和为最大的第一节点指针

} } return (p1); } void main()

//主函数 { Link A,B,p,q; int a,b; do { printf(\请输入一组整数(以0为结束符,数之间回车):\\n\ p=A=Createlist();

//创建新链表 B=Adjmax(A);

//求链表中相邻两节点data值之和为最大的第一节点的指针a=(int)(B->data);

//取第一节点的data值

printf(\第一节点的data值为:%d\\n\ while(p->next)

//释放链表空间

{

q=p;

p=p->next;

free(q);

} free(p); printf(\是否继续输入下一组整数:是:1,

否:0\\n\

scanf(\

}while(b); } 上机题

2、实现算术表达式求值程序。

设操作数:0,1,2,,8,9;

运算符:+,2)*3 #,将其转换成后缀表达式:542—3*+#,然后计算,本例结果为11。

程序结构:

类型说明;两套:Clearstack(S)、Emptystack(S)、Getstop(S)、 Push(S)、Pop(S);

中缀到后缀转换的函数:Mid-post(E[n],B[n]);

后缀表达式求值的函数:Postcount(B[n]);

main

{

变量说明;

输入中缀表达式,存入E[n];

调用Mid-post(E,B);

调用Postcount(B);

打印表达式结果;

Y

继续?

N

停止 } 上机题2:

#include #include #include typedef struct node { char data; struct node *next; }snode,*slink; typedef struct

node1 { int data; struct node1 *next; }snode1,*slink1;

void Clearstack(slink s)

//置栈空 { s=NULL; } int Emptystack(slink s)

//判断栈是否为空 { if(s==NULL)

return(1); //栈空返回1 else return(0);

//栈非空返回0 } char Getstop(slink s)

//取栈顶元素 { if(s!=NULL)

return (s->data);

return (0);

} void Push(slink*s,char x)

//元素x进栈 { slink p;

p=(slink)malloc(sizeof(snode)); //生成进栈p节点 p-

>data=x;

//存入新元素 p->next=*s;

//p节点作为新的栈顶链入 *s=p; } char Pop(slink*s)

//出栈 { char x; slink p; if(Emptystack(*s))

return (-1); //栈空,返回-1 else { x=(*s)->data; p=*s; *s=(*s)->next; free(p); return (x);

//成功 } } void Push1(slink1*s,int x)

//元素x进栈 { slink1 p;

p=(slink1)malloc(sizeof(snode1)); //生成进栈p节点 p-

>data=x;

//存入新元素 p->next=*s;

//p节点作为新的栈顶链入 *s=p; } int Pop1(slink1*s)

//出栈 { int x; slink1 p; if(Emptystack1(*s))

return (-1); //栈空,返回-1 else { x=(*s)->data; p=*s; *s=(*s)->next; free(p); return (x);

//成功 } } int Emptystack1(slink1 s)

//判断栈是否为空 { if(s==NULL)

return(1); //栈空返回1 else return(0);

//栈非空返回0 } void Clearstack1(slink1 s)

//置栈空 { s=NULL; } int Getstop1(slink1 s)

//取栈顶元素 { if(s!=NULL)

return (s->data);

return (0);

} int Precede(char x,char y)

{ int a,b; switch(x)

{ case #:

//case (: case (:a=0;break; case +:

case:b=1;break; case *: case /:b=2;break;

//case 与x比较

{

E[j++]= ;

E[j++]=Pop(&s);

}

//E[j++]= ;

Push(&s,x);

//Q1 int Ecount(char E)

//后缀表达式求值 { int i=0,g=0,k=0,d=0,d1,g1; char x; int z,a,b; slink1 s=NULL; while(E[i]!=#)

{ x=E[i]; switch(x)

{

case :break;

case +:b=Pop1(&s);a=Pop1(&s);z=a+b;Push1(&s,z);break;

caseb;Push1(&s,z);break;

case *:b=Pop1(&s);a=Pop1(&s);z=a*b;Push1(&s,z);break;

case /:b=Pop1(&s);a=Pop1(&s);z=a/b;Push1(&s,z);break;

default:

{

g=0;g1=0;

while(E[i]!= )

{

g1=E[i]-0;

g=g*10+g1;

i++;

}

Push1(&s,g);

} } i++; } if(!Emptystack1(s))

return(Getstop1(s)); Clearstack1(s); } int pd(char B) { int i=0,c,j,k;

c=strlen(B); while(B[i]!=#)

{

switch(B[i])

{

case :break;

case 0:

case1:

case2:

case3:

case4:

case5:

case6:

case7:

case8:

case9:

{ j=i+1;

if(B[j]== )

{

while(B[j]== )

j++;

switch(B[j])

{

case 0:

case1:

case2:

case3:

case4:

case5: case6:

case7:

case8: case9:printf(\非法输入!请重新输入!\\n\ }

}

}break;

case +:

case1;

while(B[j]== )

j--;

switch(B[j])

{

case +:

case *:

case /:

case ):

case #:printf(\非法输入!请重新输入!\\n\ }

}break;

case (:

{

j=i-1;

while(B[j]== )

j--;

switch(B[j])

{

case 0:

case1:

case2: case3:

case4:

case5:

case6:

case7:

case8:

case #:

case ):printf(\非法输入!请重新输入!\\n\ }

k=i+1;

while(B[k]== )

k++;

switch(B[k])

{

case +:

case1;

while(B[j]== )

j--;

switch(B[j])

{

case (:printf(\非法输入!请重新输入!\\n\ }

k=i+1;

while(B[k]== )

k++;

switch(B[k])

{

case1:

case2:

case3:

case4:

case5:

case6:

case7:

case8: case9:printf(\非法输入!请重新输入!\\n\

} }break; case \\0:break; default:printf(\非法输入!请重新输入!\\n\

} i++; } if(B[0]==#)

{ printf(\表达式为空!请重新输入!\\n\

} else if (B[c-1]!=#)

{ printf(\非法输入!请重新输入!\\n\ } } void main()

{ int a,b,c,d; char B[100],E[100]; do { do {

printf(\请输入中缀表达式:\\n\ B[100]=fflush(stdin);

gets(B);

while(B[0]==\\0)

{

B[100]=fflush(stdin);

gets(B);

}

b=pd(B);

}while(b==0);

Mid_post(E,B);

printf(\后缀表达式为:\\n\

printf(\

a=Ecount(E);

printf(\结果=%d\\n\

printf(\是否继续?是:1否:0\\n\

scanf(\

}while(c==1); } 上机题

3、实现链式队列运算程序。

程序结构:

类型说明;

Clearqueue(q)、Emptyqueue(q)、Enqueue(q)、

Dequeue(q);

main

{

变量说明;上机题3:

#include #include #include typedef struct node { char data; struct node *next; }Qnode,*Qlink; typedef struct

{ Qnode *front,*rear; }linkqueue; void

Clearqueue(linkqueue *q)

//清空队列 { q->front->next=NULL; q->rear=q->front; } void Creatqueue(linkqueue *q)

//创建队列 { q->front=(Qlink)malloc(sizeof(Qnode));

q->front->next=NULL; q->rear=q->front; } } int Emptyqueue(linkqueue *q)

//判断队列是否为空 { if(q->front==q->rear)

return (1); else return (0); } void Enqueue(linkqueue *q,char e)

//元素进队 { Qlink p; p=(Qlink)malloc(sizeof(Qnode)); p->data=e; p->next=NULL; q->rear->next=p; q->rear=p; } char Dequeue(linkqueue *q)

//元素出队 { Qlink p; if(Emptyqueue(q))

return(NULL); else { p=q->front; q->front=p->next; free(p); return(q->front->data); } } void main() { char a,b;int c; linkqueue q; Creatqueue(&q);

do{ a=getchar(); switch (a)

{ case 0:

{

if(Emptyqueue(&q))

{

printf(\队列为空!\\n\ printf(\请继续输入!\\n\ }

else {

b=Dequeue(&q);

printf(\出队\\n\

printf(\请继续输入!\\n\ }

}break;

case @:

{

if(Emptyqueue(&q)) {printf(\队列为空!\\n\ else

{

printf(\全部元素出队:\\n\ while(Emptyqueue(&q)!=1) {

b=Dequeue(&q);

printf(\

}

printf(\

}

}break;

case \\n:break;

default :{Enqueue(&q,a);c=1;}break; } }while(c); } 上机题

4、设电文字符集D及各字符出现的概率F如下:

D={a,b,c,d,e,f,g,h}

F={5,29,7,8,14,23,3,11}(%)

编写完成下列功能的程序:

①构造关于F的Huffman树;②求出并打印D总各字符的Huffman编码。

程序结构:

类型说明;

构造Huffman树的函数:Huffman_tree(H[m+1]);

求Huffman编码的函数:Huffman_code(code[n+1]);

main()

{ 变量说明;

输入字符集D及频率F;

调用Huffman_tree(H);

调用Huffman_code(code);

打印编码; Y

N

停止

} 上机题4:

#include #define n20 #define m2*n-1

//H树的节点数 #define max99 typedef struct { int wi; char data; int parent,Lchild,Rchild; }huffm; void

Huffman_tree(huffm HT,int F,int p,int q)

{ int i,j,p1,p2; int w,s1,s2; for(i=1;i {

s2=HT[j]、wi;

p2=j;

}

HT[p1]、parent=HT[p2]、parent=i;

HT[i]、Lchild=p1;

HT[i]、Rchild=p2;

HT[i]、wi=HT[p1]、wi+HT[p2]、wi; } } typedef struct { char bits[n+1]; int start; char ch; }ctype; void

Huffman_code(ctype code,huffm HT,char D,int F,int p,int q) { int i,j,a,s; ctype md; for(i=1;i } } void main()

{ int F[30]; int i,j,k,p0=0,p1=0,q,d,f,p,i1,w; char

D[50]; huffm HT[m+1]; ctype code[n+1]; do { do{do{ do

{

p0=0;

D[50]=fflush(stdin);

printf(\请输入字符集D!(最多20个字符,以#为结束符)\\n\ scanf(\

for(k=0;kn)

{

printf(\超出范围!\\n\

d=1;

D[50]=fflush(stdin); }

else d=0;

}while(d); printf(\请输入各字符出现的概率集F!(每个数直接要回车!以-1为结束符)\\n\

for(i=0;i printf(\非法输入!\\n\ d=1; }

else if(p!=p1)

{ printf(\的元素个数与F的元素个数不等!\\n请重新输

入!\\n\ }

//for(i=0;i Huffman_tree(HT,F,p,q);

/* for(i=1;i Huffman_code(code,HT,D,F,p,q);

//printf(\ printf(\字符\\tbits\\n\

for(i=1;i 上机题5:设英文句子:“everyone round you can hear you when you speak、”,试编写完成下面任务的程序。

依次读入句中各单词,构造一棵二叉排序树;即:

按LDR遍历此二叉排序树。L DR:

can everyone hear round speak when you 上机题5:

/*#include #include #include #define max200 typedef struct node { char key[20]; int w; }Retype; typedef struct Bsnode { Retype data; struct Bsnode

*Lchild,*Rchild; }BSN,*BSP; BSP BSTinsert(BSP T,BSP S) { BSP q,p; if(T==NULL)

return(S); p=T; q=NULL; while(p)

{ q=p; if(strcmp(S->,p->)==0)

{

free(S);

return(T);

} if(strcmp(S->,p->)Lchild; else

p=p->Rchild;

} if(strcmp(S->,q->)Lchild=S; else

q->Rchild=S; return(T); } BSP CreateBst(char A)

{int i,j,k=0,p=0; char b[15],B[150]; BSP T,S;

do{ if(A[0]==\\0)

{gets(B);A=B;} }while(A[0]==\\0); T=NULL; do

{ while(A[k]= )

k++;

//while(A[k]!= )

// { // p=0; //switch(A[k])

//{ // case :break; // default:b[p++]=A[k]; //} //

b[p++]=A[k]; // k++; // } printf(\ p=0; while(A[k]!= ) { switch(A[k])

{ case :break; default:b[p++]=A[k]; }

k++; if(b[p-1]==、)

b[p-1]=\\0; b[p]=\\0;

S=(BSP)malloc(sizeof(BSN)); for(i=0;i[i]=b[i];

S->=i; } else

break;

printf(\ S->Lchild=S->Rchild=NULL;

//printf(\ T=BSTinsert(T,S);

//scanf(\

} // } }while(b[p-1]=、); return(T); } void visit(BSP T)

{ int i; for(i=0;i;i++)

printf(\

// else break; printf(\} void inorder(BSP T)

数据结构题目及c语言代码

目题程设计《数据结构》课)C语言程序实现采用():3选王(学时目 题1:猴子一堆猴子都有编号,编号是1,2,3 ...m,这群猴子(m个)按照1-m 的顺序围坐一圈,从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 要求:m及n要求从键盘输入,存储方式采用向量及链表两种方式实现该问题求解。 //链表 #include #include // 链表节点 typedef struct _RingNode { int pos; struct _RingNode *next; }RingNode, *RingNodePtr; // 创建约瑟夫环,pHead:链表头指针,count:链表元素个数 void CreateRing(RingNodePtr pHead, int count) { RingNodePtr pCurr = NULL, pPrev = NULL; int i = 1; pPrev = pHead; while(--count > 0) {

pCurr = (RingNodePtr)malloc(sizeof(RingNode)); i++; pCurr->pos = i; pPrev->next = pCurr; pPrev = pCurr; } pCurr->next = pHead; // 构成环状链表 } void KickFromRing(RingNodePtr pHead, int n) { RingNodePtr pCurr, pPrev; int i = 1; // 计数 pCurr = pPrev = pHead; while(pCurr != NULL) { if (i == n) { // 踢出环 printf(\ %d, pCurr->pos); // 显示出圈循序 pPrev->next = pCurr->next;

数据库系统概论期末试题及答案(重点知识)

试题十 一、单项选择题 (本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要 求的,错选、多选或未选均无分。 1. 数据库系统的特点是( )、数据独立、减少数据冗余、避免数据不一致和加强了数据保护。 A .数据共享 B .数据存储 C .数据应用 D .数据保密 2. 数据库系统中,物理数据独立性是指( )。 A .数据库与数据库管理系统的相互独立 B .应用程序与DBMS 的相互独立 C .应用程序与存储在磁盘上数据库的物理模式是相互独立的 D .应用程序与数据库中数据的逻辑结构相互独立 3. 在数据库的三级模式结构中,描述数据库中全体数据的全局逻辑结构和特征的是( )。 A .外模式 B .内模式 C .存储模式 D .模式 4. E-R 模型用于数据库设计的哪个阶段( )? A .需求分析 B .概念结构设计 C .逻辑结构设计 D .物理结构设计 5. 现有关系表:学生(宿舍编号,宿舍地址,学号,姓名,性别,专业,出生日期)的主码是( )。 A .宿舍编号 B .学号 C .宿舍地址,姓名 D .宿舍编号,学号 6. 自然连接是构成新关系的有效方法。一般情况下,当对关系R 和S 使用自然连接时,要求R 和S 含有一个或多个共有的( )。 A .元组 B .行 C .记录 D .属性 7. 下列关系运算中,( )运算不属于专门的关系运算。 A .选择 B .连接 C .广义笛卡尔积 D .投影 8. SQL 语言具有( )的功能。 ( 考 生 答 题 不 得 超 过 此 线 )

A.关系规范化、数据操纵、数据控制 B.数据定义、数据操纵、数据控制 C.数据定义、关系规范化、数据控制 D.数据定义、关系规范化、数据操纵 9.如果在一个关系中,存在某个属性(或属性组),虽然不是该关系的主码或只是主码的一部分,但却是另一个关系的主码时,称该属性(或属性组)为这个关系的() A.候选码 B.主码 C. 外码 D. 连接码 10.下列关于关系数据模型的术语中,()术语所表达的概念与二维表中的 “行”的概念最接近? A.属性 B.关系 C. 域 D. 元组 11.假定学生关系是S(S#,SNAME,SEX,AGE),课程关系是C(C#,CNAME, TEACHER),学生选课关系是SC(S#,C#,GRADE)。 要查找某个学生的基本信息及其选课的平均成绩,将使用关系()A.S和SC B.SC和C C.S和C D.S、SC和C 12.在SQL语言的SELECT语句中,用于对结果元组进行排序的是()子句。 A. GROUP BY B.HAVING C.ORDER BY D.WHERE 13.设有关系SC(SNO,CNO,GRADE),主码是(SNO,CNO)。遵照实体完整性规则,下面()选项是正确的。 A.只有SNO不能取空值B.只有CNO不能取空值 C.只有GRADE不能取空值D.SNO与CNO都不能取空值 14.下面关于函数依赖的叙述中,()是不正确的。 A.若X→Y,WY→Z,则XW→Z B.若Y X,则X→Y C.若XY→Z,则X→Z,Y→Z D.若X→YZ,则X→Y,X→Z 15.设有关系R(A,B,C)和S(C,D)。与SQL语句select A,B,D from R,S where R.C=S.C等价的关系代数表达式是() A.σR.C=S.C(πA,B,D(R×S)) B.πA,B,D(σR,C= S.C(R×S)) C.σR.C=S.C((πA,B(R))×(πD(S))) D.σR,C=S.C(πD((πA,B(R))×S))

全国计算机三级数据库技术上机试题100道

1.【考点分析】本题考查对4位整数的排序。考查的知识点主要包括:数组元素的排序算法,if判断语句和逻辑表达式,以及求余算术运算。 【解题思路】此题属于4位数排序问题。本题需主要解决3个问题:问题1如何取4位数的后3位进行比较;问题2如何按照题目要求的条件(按照每个数的后3位的大小进行降序排列,如果后3位相等,则按照原始4位数的大小进行升序排列)排序;问题3如何将排完序的前10个数存到数组bb中去。 本题的解题思路为:使用双循环对数组按条件进行排序,然后将排完序的前10个数存到数组bb中。对于问题1可以通过算术运算的取余运算实现(aa[i]%1000);问题2通过包含if判断语句的起泡排序法就可以实现。 【参考答案】 void jsSort() { int i,j; /*定义循环控制变量*/ int temp; /*定义数据交换时的暂存变量*/ for(i=0;i<199;i++) /*用选择法对数组进行排序*/ for(j=i+1;j<200;j++) { if(aa[i]%1000aa[j]) /*则要按原4位数的值进行升序排序*/ { temp=aa[i]; aa[i]=aa[j]; aa[j]=temp; } } for(i=0;i<10;i++) /*将排序后的前10个数存入数组b中*/ bb[i]=aa[i]; } 【易错提示】取4位数后三位的算法,if判断语句中逻辑表达式的比较运算符。 2.【考点分析】本题主要考查的知识点包括:C语言循环结构,if判断语句和逻辑表达式,以及分解多位整数的算术运算。 【解题思路】分析题干,本题除给出条件"SIX+SIX+SIX = NINE+NINE"之外,还可得出2个隐含的条件:条件1:SIX和NINE分别是3位和4位的正整数;条件2:SIX的十位数字等于NINE的百位数字,NINE的千位数字和十位数字相等。 本题解题思路:通过嵌套的循环结构可以遍历到所有的3位和4位数,对于每一个3位数及4位数的组合进行题设条件(SIX+SIX+SIX = NINE+NINE)的判断,满足条件的对其分解得到各数位的数字,再进一步判断各位数字是否满足本题隐含的条件(条件1及条件2),如果满足则个数加1,并将该3位数及4位数添加到和值中。 【参考答案】 void countValue() { int i,j; int s2; int n2,n3,n4; for(i=100;i<1000;i++)

数据结构实验报告-答案

数据结构(C语言版) 实验报告

专业班级学号姓名 实验1 实验题目:单链表的插入和删除 实验目的: 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 实验要求: 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 实验主要步骤: 1、分析、理解给出的示例程序。 2、调试程序,并设计输入数据(如:bat,cat,eat,fat,hat,jat,lat,mat,#),测 试程序的如下功能:不允许重复字符串的插入;根据输入的字符串,找到相应的结点并删除。 3、修改程序: (1)增加插入结点的功能。 (2)将建立链表的方法改为头插入法。 程序代码: #include"" #include"" #include"" #include"" typedef struct node . . 示意图:

head head head 心得体会: 本次实验使我们对链表的实质了解更加明确了,对链表的一些基本操作也更加熟练了。另外实验指导书上给出的代码是有一些问题的,这使我们认识到实验过程中不能想当然的直接编译执行,应当在阅读并完全理解代码的基础上再执行,这才是实验的意义所在。

实验2 实验题目:二叉树操作设计和实现 实验目的: 掌握二叉树的定义、性质及存储方式,各种遍历算法。 实验要求: 采用二叉树链表作为存储结构,完成二叉树的建立,先序、中序和后序以及按层次遍历 的操作,求所有叶子及结点总数的操作。 实验主要步骤: 1、分析、理解程序。 2、调试程序,设计一棵二叉树,输入完全二叉树的先序序列,用#代表虚结点(空指针), 如ABD###CE##F##,建立二叉树,求出先序、中序和后序以及按层次遍历序列,求 所有叶子及结点总数。 实验代码 #include"" #include"" #include"" #define Max 20 ertex=a; irstedge=NULL; irstedge; G->adjlist[i].firstedge=s; irstedge; R[i] 留在原位

数据结构程序设计题目共29题

目录 题目1:设计一元多项式简单计算.................................. 错误!未定义书签。题目2:链表应用1 ....................................................... 错误!未定义书签。题目3:链表应用2 .......................... 错误!未定义书签。题目4:?通讯录 ............................ 错误!未定义书签。题目5:停车场管理系统....................... 错误!未定义书签。题目6:约瑟夫环............................ 错误!未定义书签。题目7:运动会分数统计....................... 错误!未定义书签。题目8:文学研究助手问题..................... 错误!未定义书签。题目9:银行业务模拟与离散事件模拟 ............ 错误!未定义书签。题目10:学生信息管理系统任务(用顺序表/链表).. 错误!未定义书签。题目11:文章编辑功能 ....................... 错误!未定义书签。题目12:实验室管理......................... 错误!未定义书签。题目13:二叉树的基本操作(建立、求二叉树树深度、遍历).错误!未定义 书签。 题目14:纸牌游戏任务 ....................... 错误!未定义书签。题目15:算术表达式求值...................... 错误!未定义书签。题目16:内部排序算法比较.................... 错误!未定义书签。题目17:哈夫曼树的构造和哈夫曼编码/译码 ....... 错误!未定义书签。题目18:构造可以使n个城市连接的最小生成树..... 错误!未定义书签。题目19:交通咨询系统中的最短路径............. 错误!未定义书签。题目20:集合的交、并、差运算................. 错误!未定义书签。题目21:长整数四则运算...................... 错误!未定义书签。题目22:机订票系统......................... 错误!未定义书签。题目23:图书管理系统 ....................... 错误!未定义书签。题目24:哈希表应用......................... 错误!未定义书签。题目25:模拟旅馆管理系统的一个功能——床位的分配与回收.错误!未定义 书签。 题目26:地图着色问题 ....................... 错误!未定义书签。题目27:俄罗斯套娃问题...................... 错误!未定义书签。题目28:扫雷.............................. 错误!未定义书签。题目29:用C语言设计一个日历系统............. 错误!未定义书签。

数据库系统概论复习题及答案

第一学期期末考试试卷和答案 试卷代码:03115 授课课时:96 课程名称:数据库系统原理A 适用对象:本科选课班 一、选择题(从下列各题四个答案中选出一个正确答案,每小题1分,共10分) 1、在数据库技术发展的几个阶段中,数据独立性最高的是__A___阶段。 A、数据库系统 B、文件系统 C、人工管理 D、数据项管理 2、在SQL的SELECT语句中,与选择运算对应的命令动词是__C___。 A、SELECT B、FROM C、WHERE D、ORDER BY 3、在数据库中,下列说法_A__是不正确的 A、数据库避免了一切数据的重复 B、若系统是完全可以控制的,则系统可确保更新是的一致性 C、数据可以共享 D、数据库减少了冗余 4、在数据库系统中,模式/外模式映像用于解决数据的_C__ A、结构独立性 B、物理独立性 C、逻辑独立性 D、分布独立性 5、关系代数的5种基本运算是__D_。 A、并、差、选择、投影、自然连接 B、并、差、交、选择、投影 C、并、差、交、选择、笛卡尔积 D、并、差、选择、投影、笛卡尔积 6、在SQL语句中,谓词“EXISTS”的含义是_B___。 A、全称量词 B、存在量词 C、自然连接--在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列 D、等值连接--在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列 7、规范化过程主要为克服数据库逻辑结构中的插入异常、删除异常、更新异常以及_C__的缺陷 A、数据不一致性 B、结构不合理 C、冗余度大 D、数据丢失 8、数据库数据的正确性和相容性是数据库的__B____。 A、安全性 B、可维护性 C、完整性 D、并发控制 9、数据库三级模式体系结构主要的目标是确保数据库的_B__。 A、数据安全性 B、数据独立性

《数据库》上机练习题

数据库期中上机考试题 1、在E:\学教管理系统\的路径下建立“学教管理”数据库 2、从服务器jsj上的“jxgl1“库中导入数据到“学教管理”数据库中。 3、在‘学教管理’数据库中增加两个数据表Scholarship-class (奖学金等级,平均最低成绩,金额),Scholarship(学号,奖学金等级,获奖时间),并建立相应的主码、外码和关联。 4、创建“学教管理”数据库中表之间的关系。 5、根据“学教管理”数据库中的基本数据表,进行下列各操作 1)修改Grade表,添加主码、外部码及关联,以及成绩限制在0~100之间。 2)在课程表中增加一个‘先修课号’属性,用于指定在学本课之前必须先修的课程,如果为空,则表示该课没有要求的先修课程。 3)向Student表中录入一条新记录(2005061,赵五,男) 4)分别向Class和grade表中录入一些2009信管管理、2009工商管理、2009旅游管理、2009数理经济四个班级的信息,以及四个班级的一些同学的选课信息。。 5)将李勇的计算机网络成绩置空。 6)找出所有被学生选修了的课程号。 7)查询01311班女同学的个人信息。 8)查询没有选修1号课程的学生姓名与班级号,并按班级号分组和排序。 9)查询姓李的学生的所有信息。 10)查询2009信息管理专业学生的数据库成绩 11)求选修了所有课程的学生学号和姓名。 12)求选修了数据库课程的学生人数。 13)列出每门课程的选修人数。 14)查询选修了3门课以上的学生学号和姓名 15)查询学生张婷婷选修的课程号、课程名和成绩 16)找出2009数理经济班所学数据库的平均分、最高分、最低分 17)找出与李勇在同一班级的学生基本情况信息 18)找出年龄介于李勇的年龄和25之间的学生信息 19)TOM已退学,从数据库删除有关他的相应记录。

数据结构上机答案(c语言版)

实习一: 1、编写一个读入一个字符串,把它存入一个链表,并按相反的次序打印的程序。 2、设有一个单位的人员工资有如下信息:name、department、 base pay、allowance、total。现从键盘输入一组人员工资数据并将它们存储到名为paydata的文件中;再从paydata取出工资数据并给每个人的base pay增加100元,增加后将工资数据显示于屏幕(每行1人)。请编写能够完成上述工作的程序。 代码如下: 1.#include #include #include void main() { char x; struct node //定义个结构node { char c; struct node *next; }; struct node *head,*pb,*pf,*p,*s,*t; //定义指针 printf("请输入字符串,按Enter结束!\n"); for(int i=0;x!='\n';i++) { pb=(struct node *)malloc(sizeof(struct node));//动态分配n字节的内存空间 scanf("%c",&pb->c); //输入字符 x=pb->c; if(i==0){ //输入的首个字符作为头结点pf head=pb; pf=head;} else if(pb->c!='\n'){ //如果输入的是Enter,输入终止,否则把字符依次存入链表 pf->next=pb; //把输入的字符pb存在pf后,pb后为空 pb->next=NULL;

数据结构经典题目及c语言代码.

《数据结构》课程设计题目 (程序实现采用C语言) 题目1:猴子选王(学时:3) 一堆猴子都有编号,编号是1,2,3 ...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 要求:m及n要求从键盘输入,存储方式采用向量及链表两种方式实现该问题求解。 //链表 #include #include // 链表节点 typedef struct _RingNode { int pos; struct _RingNode *next; }RingNode, *RingNodePtr; // 创建约瑟夫环,pHead:链表头指针,count:链表元素个数 void CreateRing(RingNodePtr pHead, int count) { RingNodePtr pCurr = NULL, pPrev = NULL; int i = 1; pPrev = pHead; while(--count > 0)

{ pCurr = (RingNodePtr)malloc(sizeof(RingNode)); i++; pCurr->pos = i; pPrev->next = pCurr; pPrev = pCurr; } pCurr->next = pHead; // 构成环状链表 } void KickFromRing(RingNodePtr pHead, int n) { RingNodePtr pCurr, pPrev; int i = 1; // 计数 pCurr = pPrev = pHead; while(pCurr != NULL) { if (i == n) { // 踢出环 printf("\n%d", pCurr->pos); // 显示出圈循序 pPrev->next = pCurr->next; free(pCurr); pCurr = pPrev->next; i = 1; }

数据库系统应用试题及答案

数据库系统概述 一、概述 1.数据库系统是采用了数据库技术的计算机系统,数据库系统由数据库、数据库管理系统、应用系统和()。 A.系统分析员 B.程序员 C.数据库管理员 D.操作员 2.数据库(DB),数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是()。 A.DBS包括DB和DBMS B.DBMS包括DB和DBS C.DB包括DBS和DBMS D.DBS就是DB,也就是DBMS 3.下面列出的数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是()。 I.人工管理阶段 II.文件系统阶段 III.数据库阶段 A.I 和 II B.只有 II C.II 和 III D.只有 I 4.下列四项中,不属于数据库系统特点的是()。 A.数据共享 B.数据完整性 C.数据冗余度高 D.数据独立性高 5.数据库系统的数据独立性体现在()。 A.不会因为数据的变化而影响到应用程序 B.不会因为数据存储结构与数据逻辑结构的变化而影响应用程序 C.不会因为存储策略的变化而影响存储结构 D.不会因为某些存储结构的变化而影响其他的存储结构 6.描述数据库全体数据的全局逻辑结构和特性的是()。 A.模式 B.内模式 C.外模式 D. 7.要保证数据库的数据独立性,需要修改的是()。 A.模式与外模式 B.模式与内模式 C.三级模式之间的两层映射 D.三层模式 8.要保证数据库的逻辑数据独立性,需要修改的是()。 A.模式与外模式之间的映射 B.模式与内模式之间的映射 C.模式 D.三级模式 9.用户或应用程序看到的那部分局部逻辑结构和特征的描述是()模式。 A.模式 B.物理模式 C.子模式 D.内模式 10.下述()不是DBA数据库管理员的职责。 A.完整性约束说明 B.定义数据库模式 C.数据库安全 D.数据库管理系统设计 11.概念模型是现实世界的第一层抽象,这一类模型中最著名的模型是()。 A.层次模型 B.关系模型 C.网状模型 D.实体-关系模型 <实体-联系图Entity Relationship Diagram 基本要素:实体型属性联系> 12.区分不同实体的依据是()。 A.名称 B.属性 C.对象 D.概念 13.关系数据模型是目前最重要的一种数据模型,它的三个要素分别是()。 A.实体完整性、参照完整性、用户自定义完整性 B.数据结构、关系操作、完整性约束 C.数据增加、数据修改、数据查询 D.外模式、模式、内模式 14.在()中一个结点可以有多个双亲,结点之间可以有多种联系。 A.网状模型 B.关系模型 C.层次模型 D.以上都有 15.()的存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作。 A.网状模型 B.关系模型 C.层次模型 D.以上都有

数据库上机实验题目和答案

试用SQL的查询语句表达下列查询: 1.检索王丽同学所学课程的课程号和课程名。 select Cno ,Cname from c where Cno in (select cno from sc where sno in (select sno from s where sname='王丽' )) 2.检索年龄大于23岁的男学生的学号和姓名。 select sno,sname from s where sex='男' and age>23 3.检索‘c01’课程中一门课程的女学生姓名 select sname from s where sex='女' and sno in (select sno from sc where cno='c01') 4.检索s01同学不学的课程的课程号。 select cno from c where cno not in (select cno from sc where sno ='s01') 5.检索至少选修两门课程的学生学号。 select sc.sno from s,sc where s.sno=sc.sno group by sc.sno having count(https://www.360docs.net/doc/383848320.html,o)>=2 6.每个学生选修的课程门数。 解法一: select so.sno sno,https://www.360docs.net/doc/383848320.html,ount,s.sname from(select sc.sno sno,count(sc.sno) ccount from sc,s where s.sno=sc.sno group by sc.sno ) so,s where s.sno=so.sno 解法二: select sc.sno sno,s.sname,count(sc.sno) ccount from sc,s where s.sno=sc.sno group by sc.sno,sname

数据结构上机例题及答案

习题二 ⒉1描述以下四个概念的区别:头指针变量,头指针,头结点,首结点(第一个结点)。解:头指针变量和头指针是指向链表中第一个结点(头结点或首结点)的指针;在首结点之前附设一个结点称为头结点;首结点是指链表中存储线性表中第一个数据元素的结点。若单链表中附设头结点,则不管线性表是否为空,头指针均不为空,否则表示空表的链表的头指针为空。 2.2简述线性表的两种存储结构有哪些主要优缺点及各自使用的场合。 解:顺序存储是按索引直接存储数据元素,方便灵活,效率高,但插入、删除操作将引起元素移动,降低了效率;而链式存储的元素存储采用动态分配,利用率高,但须增设表示结点之间有序关系的指针域,存取数据元素不如顺序存储方便,但结点的插入和删除十分简单。顺序存储适用于线性表中元素数量基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素的情况;而链式存储适用于频繁进行元素动态插入或删除操作的场合。 2.3 在头结点为h的单链表中,把值为b的结点s插入到值为a的结点之前,若不存在a,就把结点s插入到表尾。 Void insert(Lnode *h,int a,int b) {Lnode *p,*q,*s; s=(Lnode*)malloc(sizeof(Lnode)); s->data=b; p=h->next; while(p->data!=a&&p->next!=NULL) {q=p; p=p->next; } if (p->data==a) {q->next=s; s->next=p;} else

{p->next=s; s->next=NULL; } } 2.4 设计一个算法将一个带头结点的单链表A分解成两个带头结点的单链表A和B,使A中含有原链表中序号为奇数的元素,而B中含有原链表中序号为偶数的元素,并且保持元素原有的相对顺序。 Lnode *cf(Lnode *ha) {Lnode *p,*q,*s,*hb; int t; p=ha->next; q=ha; t=0; hb=(Lnode*)malloc(sizeof(Lnode)); s=hb; while(p->next!=NULL) {if (t==0) {q=p;p=p->next;t=1;} else {q->next=p->next; p->next=s->next; s->next=p; s=p; p=p->next; t=0; } } s->next=NULL; return (hb); }

数据库系统概述习题及答案

习题一 第1章数据库系统概述 一、填空题 1. 在关系数据库中,一个元组对应表中。 解:一个记录 (一行) 2. 常用的数据模型 有:、、和面向对象模型。解: 关系模型,层次模型,网状模型 3. 用二维表来表示实体及实体之间联系的数据模型是。 解: 关系模型 4. 关系模型数据库中最常用的三种关系运算 是、、。 解: 选择运算,投影运算,连接运算 5. 在数据库系统中,数据的最小访问单位是。解: 字段(数据项) 6. 对表进行水平方向的分割用的运算 是。

解: 选择运算 7. 数据结构、和称为数据模型的三要素。解: 数据操作,数据约束条件 8. 关系的完整性约束条件包括完整性、完整性 和完整性三种。 解: 用户定义,实体,参照 二、单项选择题 1. 对数据库进行规划、设计、协调、维护和管理的人员,通常被称为( D )。 A. 工程师 B. 用户 C. 程序员 D. 数据库管理员 2. 下面关于数据(Data)、数据库(DB)、数据库管理系统(DBMS)与数据库系统(DBS)之间关系的描述正确的是( B )。 A. DB包含DBMS和DBS B. DBMS包含DB和DBS C. DBS包含DB和DBMS D. 以上都不对 3. 数据库系统的特点包括( D )。 A. 实现数据共享,减少数据冗余 B. 具有较高的数据独立性、具有统一的数据控制功能

C. 采用特定的数据模型 D. 以上特点都包括 4. 下列各项中,对数据库特征的描述不准确的是( D )。 A. 数据具有独立性 B. 数据结构化 C. 数据集中控制 D. 没有冗余 5. 在数据的组织模型中,用树形结构来表示实体之间联系的模型称为 ( D )。 A. 关系模型 B. 层次模型 C. 网状模型 D. 数据模型 6. 在数据库中,数据模型描述的是 ( C ) 的集合。 A. 文件 B. 数据 C. 记录 D. 记录及其联系 7. 在关系数据库中,关系就是一个由行和列构成的二维表,其中行对应( B )。 A. 属性 B. 记录 C. 关系 D. 主键 8. 关系数据库管理系统所管理的关系是( C )。 A. 一个二维表 B. 一个数据库

数据库上机习题及答案

数据库及应用复习题 一、设计题 有一个[学生课程]数据库,数据库中包括三个表: 学生表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记为: Student(Sno,Sname,Ssex,Sage,Sdept) ,Sno 为关键字。 课程表Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记为:Course(Cno,Cname,Cpno,Ccredit) Cno为关键字。 成绩表SG由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记为:SG(Sno,Cno,Grade) (SNO, CNO)为关键字。 用SQL语言实现下列功能: 1.建立学生表Student,其中学号属性不能为空,并且其值是唯一的。 2.向Student表增加“入学时间(Scome)”列,其数据类型为日期型。 3.查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。4.查询学习1号课程的学生最高分数、平均成绩。 5.查询与“李洋”在同一个系学习的学生。 6.将计算机系全体学生的成绩置零。 7.删除学号为05019的学生记录。 8.删除计算机系所有学生的成绩记录。 1. CREATETABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20), Ssex CHAR(2), Sage INT, Sdept CHAR(15)) 2. ALTER TABLE Student ADD Scome DATETIME 3. SELECT Sno, Grade FROM SG WHERE Cno='3' ORDER BY Grade DESC 4. SELECT MAX(Grade), AVG(Grade) FROM SC WHERE Cno='1' 5. SELECT Sno, Sname, Sdept FROM Student WHERE Sdept IN

经典数据结构上机题_答案解析

数据结构上机实验题目 实验一线性表的顺序存储结构 实验学时 2学时 背景知识:顺序表的插入、删除及应用。 目的要求: 1.掌握顺序存储结构的特点。 2.掌握顺序存储结构的常见算法。 实验容 1.输入一组整型元素序列,建立顺序表。 2.实现该顺序表的遍历。 3.在该顺序表中进行顺序查找某一元素,查找成功返回1,否则返回0。4.判断该顺序表中元素是否对称,对称返回1,否则返回0。 5.实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。 6.输入整型元素序列利用有序表插入算法建立一个有序表。 7.利用算法6建立两个非递减有序表并把它们合并成一个非递减有序表。 8. 利用该顺序结构实现循环队列的入队、出队操作。 8.编写一个主函数,调试上述算法。 #include #include

#define OVERFLOW 0 #define MAXSIZE 100 typedef int ElemType; typedef struct list {ElemType elem[MAXSIZE]; int length; }Sqlist; void Creatlist(Sqlist &L) {int i; printf("请输入顺序表的长度:"); //输入一组整型元素序列,建立一个顺序表。 scanf("%d",&L.length); for(i=0;i

数据库管理系统试题及答案样本

一、简答题( 共5小题, 每题6分, 共30分) 1.简述数据库、数据库管理系统与数据库系统的概念。 答: 数据库: DataBase, 简称DB。是长期储存在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和储存, 具有较小的冗余度、较高的数据独立性和易扩展性, 并可为各种用户共享。 数据库管理系统: DataBase Management System, 简称DBMS, 是位于用户与操作系统之间的一层数据管理软件, 用于科学地组织和存储数据、高效地获取和维护数据。它的主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护。 数据库系统: DataBase System, 简称DBS, 它是包含数据库的具体应用系统, 由支持该应用系统的某一具体的数据库、数据库管理系统和应用程序三部分组成。 2.简述两段锁协议并说明两段锁协议和事务可串行化调度的关系。 答: 所谓两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。 1、在对任何数据进行读、写操作之前, 首先要申请并获得对该数据的封锁;

2、在释放一个封锁之后, 事务不再申请和获得任何其它封锁。 如果事务中所有的加锁操作都在事务的第一个解锁操作之前进行, 那么这个事务是遵循两段锁协议的。如果一个调度中的每个事务都遵循两段锁协议, 那么该调度必然是冲突可串行化的。 事务遵守两段锁协议是可串行化调度的充分条件, 而不是必要条件。 3.简述可串行化调度和正确调度。 答: 多个事务的并发执行是正确的, 当且仅当其结果与按某一次序串行执行它们的结果相同, 我们称这种调度策略为可串行 化的调度。 可串行性是并发事务正确性的准则, 按这个准则规定, 一个给定的并发调度, 当且仅当它是可串行化的, 才认为是正确调度。 4.简述数据库中的死锁现象, 并简述如何使用有向图方法检测死锁。 答: 死锁是指当两个或多个事务相互等待对方所拥有的锁被释放时, 所产生的僵持局面。 有向图G=( T, U) 。T为结点的集合, 每个结点表示正运行的事务; U为边的集合, 每条边表示事务等待的情况。若T1等待

数据库上机题目

上机时间7-18周周四上午3、4节 实验第一部分数据库操作 一:熟悉ACCESS环境(不用提交) 下面的实验要在七周内完成 实验1 建立学生、课程及成绩表,录入部分数据,并设计验证实体、参照及用户自定义完整性。 实验第二部分SQL语句VB数据库访问技术 二:SQL语句及VB数据库访问技术(要提交) 下面的SQL语句要求在“学生成绩管理”数据库进行测试。 下面的实验要在八至十二周内完成,要求提交纸质实验报告,实验报告包括:实验题目、SQL语句及查询结果的截图(查询的名称为自己的学号加姓名)。 【实验2_1】查询学生基本信息表中的所有信息。 SQL语句如下: 【实验2_2】在学生基本信息表中查询学生的学号、姓名、性别和族别信息。 SQL语句如下: 【实验2_3】从学生基本信息表中查询学生由哪些民族构成。 学生的族别有多行重复,要快速查询学生的民族构成,实际上就是对相同值的族别只需要显示一行,可使用DISTINCT关键字实现。 【实验2_4】从成绩表中查询学生成绩。 SQL语句如下: 【实验2_5】从相关表中查询每一位学生的学号、姓名、课程名称、成绩。 【实验2_6】在课程信息表中查找“Delphi程序设计”课程的任课老师。 【实验2_7】查询少数民族学生的基本情况。 【实验2_8】检索1985年1月1日以后出生的女生基本信息。 【实验2_9】查询每位同学的课程门数、总成绩、平均成绩。 【实验2_10】从学生基本信息表中统计各民族学生人数。 【实验2_11】从学生基本信息表中统计汉族学生的人数。 【实验2_12】显示平均成绩大于等于80分以上的学生情况。

【实验2_13】查询学生成绩并将显示的结果按成绩升序排序。 SQL语句如下: 【实验2_14】查询1985年出生的学生基本信息。 【实验2_15】查询不及格学生成绩信息。 查询不及格学生成绩信息,也就是查询0—59之间的学生成绩,可用BETWEEN关键字表示为:WHERE 成绩BETWEEN 0 AND 59。 【实验2_16】查询课程编号为002、003、007的课程编号、课程名称、任课教师和上课时间。 【实验2_17】检索所有姓刘的学生基本信息。 【实验2_18】检索包含“技术”两字的课程信息。 【实验2_19】查询第2 个字为“丽”的学生信息。 【实验2_20】查询课程信息表中教师未定的课程信息。 【实验2_21】统计成绩表中各门课程的学生人数、总成绩、平均成绩。 【实验2_22】检索单科成绩高于全班平均分的学生成绩信息。 【实验2_23】使用左外连接检索学生成绩信息(学号,姓名,课程名称)。 【实验2_24】使用右外连接检索学生成绩信息(学号,姓名,课程名称)。 【实验2_25】查找同名同姓的学生信息。 【实验2_26】在VB中设计针对“课程信息表”的基本编辑窗体,需要附运行界面及源程序代码。 实验第三部分数据库应用系统开发 数据库应用系统开发作为本课程课程设计考查内容,需要在18周之前提交纸质课程设计报告(主要是系统开发侧重于实施环节的报告)及数据库应用系统。系统开发可以两人(不能超过两人)一组,系统名称可自行拟定。

数据结构课程__课后习题答案

《数据结构简明教程》练习题及参考答案 练习题1 1. 单项选择题 (1)线性结构中数据元素之间是()关系。 A.一对多 B.多对多 C.多对一 D.一对一 答:D (2)数据结构中与所使用的计算机无关的是数据的()结构。 A.存储 B.物理 C.逻辑 D.物理和存储 答:C (3)算法分析的目的是()。 A.找出数据结构的合理性 B.研究算法中的输入和输出的关系 C.分析算法的效率以求改进 D.分析算法的易懂性和文档性 答:C (4)算法分析的两个主要方面是()。 A.空间复杂性和时间复杂性 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 答:A (5)计算机算法指的是()。 A.计算方法 B. 排序方法 C.求解问题的有限运算序列 D.调度方法答:C (6)计算机算法必须具备输入、输出和()等5个特性。 A.可行性、可移植性和可扩充性 B.可行性、确定性和有穷性 C.确定性、有穷性和稳定性 D.易读性、稳定性和安全性 答:B 2. 填空题 (1)数据结构包括数据的①、数据的②和数据的③这三个方面的内容。 答:①逻辑结构②存储结构③运算

数据结构简明教程 (2)数据结构按逻辑结构可分为两大类,它们分别是①和②。 答:①线性结构②非线性结构 (3)数据结构被形式地定义为(D,R),其中D是①的有限集合,R是D上的②有限集合。 答:①数据元素②关系 (4)在线性结构中,第一个结点①前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点②后继结点,其余每个结点有且只有1个后继结点。 答:①没有②没有 (5)在树形结构中,树根结点没有①结点,其余每个结点有且只有②个前驱结点;叶子结点没有③结点,其余每个结点的后继结点数可以是④。 答:①前驱②1 ③后继④任意多个 (6)在图形结构中,每个结点的前驱结点数和后继结点数可以是()。 答:任意多个 (7)数据的存储结构主要有四种,它们分别是①、②、③和④存储结构。 答:①顺序②链式③索引④哈希 (8)一个算法的效率可分为①效率和②效率。 答:①时间②空间 3. 简答题 (1)数据结构和数据类型两个概念之间有区别吗? 答:简单地说,数据结构定义了一组按某些关系结合在一起的数组元素的集合。数据类型不仅定义了一组数据元素,而且还在其上定义了一组操作。 (2)简述线性结构、树形结构和图形结构的不同点。 答:线性结构反映结点间的逻辑关系是一对一的,树形线性结构反映结点间的逻辑关系是一对多的,图在结构反映结点间的逻辑关系是多对多的。 (3)设有采用二元组表示的数据逻辑结构S=(D,R),其中D={a,b,…,i},R={(a,b),(a,c),(c,d),(c,f),(f,h),(d,e),(f,g),(h,i)},问相对于关系R,哪些结点是开始结点,哪些结点是终端结点? 答:该逻辑结构为树形结构,其中a结点没有前驱结点,称为根结点,b、e、g、i结点没有后继结点,是终端结点,也称为叶子结点。 (4)以下各函数是算法中语句的执行频度,n为问题规模,给出对应的时间复杂度: T1(n)=n log2n-1000log2n T2(n)=3 log2 n-1000log2n

相关文档
最新文档