搜档网
当前位置:搜档网 › 九江学院 数据结构 实验报告 完整答案

九江学院 数据结构 实验报告 完整答案

九江学院 数据结构 实验报告 完整答案
九江学院 数据结构 实验报告 完整答案

(此文档为word格式,下载后您可任意编辑修改!)

《数据结构》

实验报告

班级学号:

姓名:

《数据结构》实验报告

学院:信息科学与技术学院

专业:

学期:

班级:

学号:

姓名:

易网返利网——淘宝购物返现逐新时尚-品牌服装-提供:

目录

实验1 函数、指针、结构体复习.......................................................................................

1.1 实验目的 ..............................................................................................................

1.2 实验准备 ..............................................................................................................

1.3 实验任务 ..............................................................................................................实验2 线性表....................................................................................................................

2.1 实验目的 ..............................................................................................................

2.2 实验准备 ..............................................................................................................

2.3 实验任务 ..............................................................................................................实验3 栈和队列 ................................................................................................................

3.1 实验目的 ..............................................................................................................

3.2 实验准备 ..............................................................................................................

3.3 实验任务 ..............................................................................................................实验4 线性表的综合应用..................................................................................................

4.1 实验目的 ..............................................................................................................

4.2 实验准备 ..............................................................................................................

4.3 实验任务 ..............................................................................................................实验5 树和二叉树.............................................................................................................

5.1 实验目的 ..............................................................................................................

5.2 实验准备 ..............................................................................................................

5.3 实验任务 ..............................................................................................................实验6 图 ...........................................................................................................................

6.1 实验目的 ..............................................................................................................

6.2 实验准备 ..............................................................................................................

6.3 实验任务 ..............................................................................................................实验7 查找........................................................................................................................

7.1 实验目的 ..............................................................................................................

7.2 实验准备 ..............................................................................................................

7.3 实验任务 ..............................................................................................................实验8 排序........................................................................................................................

8.1 实验目的 ..............................................................................................................

8.2 实验准备 ..............................................................................................................

8.3 实验任务 ..............................................................................................................实验9 综合实验 ................................................................................................................

9.1 实验目的 ..............................................................................................................

9.2 实验预习 ..............................................................................................................

9.3 实验任务 ..............................................................................................................

实验1 函数、指针、结构体复习

院(系):信息科学与技术学院课程名称:数据结构教师签名:

1.1 实验目的

1.掌握C语言的语法并由算法形成相应的程序。

2.熟练掌握C语言函数调用的相关知识点。

3.熟练掌握C语言的指针和结构体相关知识点。

4.理解数据结构的基本概念。

1.2 实验准备

1.复习C语言的函数调用、指针、结构体的相关知识点。

2.算法的概念和算法分析等知识。

3.C语言程序设计有关函数及数组等的知识及编程环境的使用方法。

4.复习课堂讲解的理论内容。

1.3 实验任务

1.在提示**********blank**********下面填写合适的内容完成程序设计。编写一个程序,判断一个字符串是否为“回文”(顺序和倒读都一样的字符串称为“回文”),并分析算法的时间复杂度。

提示:实现本程序需要设计两个函数。

①主函数main,数据的输入和输出在该函数中完成。

②自定义函数func,判断串s是否为回文。采用的方法是:用flag表示是否为回文。用i从左向右扫描字符串s,用j从右向左扫描字符串s,若s[i]与s[j]不相等,则flag=0(表示不是回文)并退出循环,否则,继续比较直到i

*判断指定字符串是否回文*

#include

for(i=0,j=t-1;i<=t2;i++,j--)

{

if(str[i]==str[j]) continue;

else

{ flag=0; break; }

}

if(i>=t2) flag=1;

return flag;

}

void main()

{

********************blank********************

char *s; int flag; *填空位置1,变量定义*

scanf("%s",s); *填空位置2,从键盘输入需要判定的字符串*

flag=func(s); *填空位置3,调用func函数*

if(flag==0) printf("NO\n");

else printf("YES\n"); *填空位置4,根据返回值flag的值,输出判定结果*

}

该算法的时间复杂度是:_______ O_____________。

2.定义函数int f(char *x, char y)判断x所指的字符串是否包含字符y,若是则函数返回1,否则返回0。写出完整的源程序代码。

#include

}

void main()

{

char *str,ch;

int t;

gets(str);

scanf("%c",&ch);

t=f(str,ch);

printf("t=%d\n",t);

}

3.用结构体类型编写一个程序,输入一个学生的学号、姓名及3门课的成绩,计算并输出其平均成绩。写出完整的源程序代码。

#include

*

{

int i,j;

float sum=0.0,aver;

printf("Please input the id: ");

scanf("%d",&s.id);

printf("Please input the name: ");

scanf("%s",https://www.sodocs.net/doc/9512915367.html,);

printf("Please input the three score: ");

for(i=0;i<3;i++)

{

scanf("%f",&s.score[i]);

sum=sum+s.score[i];

}

aver=sum3;

printf("average is: %f\n",aver);

}

易网返利网——淘宝购物返现

逐新时尚-品牌服装-提供:

实验2 线性表

院(系):信息科学与技术学院课程名称:数据结构教师签名:

2.1 实验目的

1.掌握顺序表的基本特点。

2.熟练掌握顺序表的建立、查找、插入和删除等操作。

3.掌握单链表的基本特点。

4.熟练掌握单链表的建立、插入、删除等基本操作。

5.理解循环链表、双向链表的含义及其特点。

6.了解循环链表、双向链表的基本操作。

2.2 实验准备

1.线性表顺序存储结构的表示。

2.顺序表的基本操作:顺序表的建立、查找、插入、删除。

3.线性表链式存储结构的表示。

4.链表的基本操作:链表的建立、查找、插入、删除。

2.3 实验任务

1.实现顺序表的各种基本操作。

(1)源程序代码。

#include

}seqlist;

void create(seqlist *L) *建立一个顺序存储的线性表*

{

int i;

printf("Please input the len of the seqlist:"); *从键盘输入当前顺序表的实际长度*

scanf("%d",&(*L).len);

printf("Please input the every element of the seqlist:");

for(i=0;i<(*L).len;i++) *从键盘输入顺序表的每个元素* scanf("%d",&(*L).list[i]);

printf("Output the every element of the seqlist:\n");

for(i=0;i<(*L).len;i++) *顺序表建立成功后,输出整个顺序表* printf("%5d",(*L).list[i]); *运行结果(1)*

printf("\n");

}

void access(seqlist *L,int i) *根据指定位置访问线性表*

{

if((i<0)||(i>(*L).len-1)) *判断给定位置是否为合法取值*

printf("The place is not correct!\n");

else

printf("%d\n",(*L).list[i]); *运行结果(2)*

}

void before_after(seqlist *L,int i) *根据指定位置寻找其前趋元素和后继元素*

{

if((i<0)||(i>(*L).len-1))

printf("The place is not correct!\n");

else if(i==0)

printf("%d\n",(*L).list[i+1]);

else if(i==(*L).len-1)

printf("%d\n",(*L).list[i-1]);

else if((i>0)&&(i<(*L).len-1))

printf("%d,%d\n",(*L).list[i-1],(*L).list[i+1]); *运行结果(3)* }

void search(seqlist *L,int key) *根据给定元素key查找顺序表*

{

int m;

for(m=0;m<(*L).len;m++)

{

if((*L).list[m]!=key)

continue;

else

{

printf("Seaching is seccessful!\n");

printf("The place of the search key is:%d\n",m);

break;

}

}

if(m>=(*L).len)

printf("The seqlist "); *运行结果(4)*

}

void delete(seqlist *L,int i) *删除顺序表的元素*

{

int m;

printf("Output the every element of the seqlist before deleting:\n"); *删除前输出顺序表中的所有元素*

for(m=0;m<(*L).len;m++)

printf("%5d",(*L).list[m]); *运行结果(5)*

printf("\n");

for(m=i;m<(*L).len;m++) *删除位置之后的所有元素依次左移一位*

(*L).list[m]=(*L).list[m+1];

(*L).len--;

printf("Output the every element of the seqlist after deleting:\n"); *删除后输出顺序表中的所有元素*

for(m=0;m<(*L).len;m++)

printf("%5d",(*L).list[m]); *运行结果(6)*

printf("\n");

}

void insert(seqlist *L,int i,int e) *在顺序表指定位置i后插入元素e*

{

int m;

printf("Output the every element of the seqlist before inserting:\n"); *插入前输出顺序表中的所有元素*

for(m=0;m<(*L).len;m++)

printf("%5d",(*L).list[m]); *运行结果(7)*

printf("\n");

(*L).len++;

for(m=(*L).len-1;m>=i;m--) *插入位置之后的元素依次右移一位* (*L).list[m+1]=(*L).list[m];

(*L).list[i]=e; *在指定位置i上插入元素e*

printf("Output the every element of the seqlist after inserting:\n");

*插入后输出顺序表中的所有元素*

for(m=0;m<(*L).len;m++)

printf("%5d",(*L).list[m]); *运行结果(8)*

printf("\n");

}

void main()

{

static seqlist *L;

int i,e;

printf("\nfunction:create\n");

create(L); *调用函数create建立一个顺序表*

printf("\nfunction:access\n");

printf("Please input the position:");

scanf("%d",&i); *从键盘输入访问位置i*

access(L,i); *调用函数access根据指定位置访问顺序表*

printf("\nfunction:before_after\n");

printf("Please input the position:");

scanf("%d",&i); *从键盘输入指定位置i*

before_after(L,i); *调用函数before_after根据位置i确定前趋元素和后继元素*

printf("\nfunction:search\n");

printf("Please input the search key:");

scanf("%d",&e); *从键盘输入查找元素e*

search(L,e); *调用函数search根据关键字e查找顺序表*

printf("\nfunction:delete\n");

printf("Please input the delete position:");

scanf("%d",&i); *从键盘输入删除位置i*

delete(L,i); *调用函数delete删除指定位置i的元素*

printf("\nfunction:insert\n");

printf("Please input the insert position:");

scanf("%d",&i); *从键盘输入插入位置i*

printf("Please input the insert element:");

scanf("%d",&e); *从键盘输入插入元素e*

insert(L,i,e); *调用函数insert在插入位置i上插入元素e* }

(2)上机调试上面的源程序,并根据下列原始数据记录程序的运行结果。

(3)运行结果记录。

①Output the every element of the seqlist: 1 2 3 4 5 6 7 8 9 10

②6

③7 , 9

The seqlist ; *定义线性表的实际长度*

}seqlist;

void create(seqlist *L) *根据已知条件建立一个有序的顺序表*

{

int i;

printf("\n\nPlease input the length of the ordered seqlist:");

**********blank**********

scanf("%d",&(*L).len); *从键盘输入有序表的实际长度,已知(*L).len=10*

printf("\n\nPlease input the every element of the ordered seqlist:");

for(i=0;i<(*L).len;i++)

**********blank**********

scanf("%d",&(*L).list[i]);

*从键盘输入有序表中的每个元素,{9}*

}

void insert(seqlist *L,int e) *在顺序表指定位置i后插入元素e*

{

int i,j,m,n;

printf("\n\nOutput the every element of the seqlist before inserting:\n"); *插入前输出顺序表中的所有元素*

for(n=0;n<(*L).len;n++)

printf("%5d",(*L).list[n]);

printf("\n");

(*L).len++;

for(i=(*L).len-2;i>=0;i--)

**********blank**********

If ( e<(*L).list[i] ) *确定插入位置*

{

**********blank**********

(*L).list[i+1]=(*L).list[i]; *插入位置之后的元素依次右移一位* j=i;

}

**********blank**********

(*L).list[j]=e; *在确定的插入位置j上插入元素e*

printf("\n\nOutput the every element of the seqlist after inserting:\n"); *插入后输出顺序表中的所有元素*

for(n=0;n<(*L).len;n++)

printf("%5d",(*L).list[n]);

printf("\n\n");

}

void main()

{

static seqlist *L;

int e=25;

**********blank**********

create(L);*调用函数create建立有序表*

**********blank**********

insert(L,e); *调用函数insert在有序表中插入元素e* }

3.实现单链表的各种基本操作。

(1)源程序代码。

#include "stdio.;

DataType e;

H=(NODEPTR)malloc(LEN); *为头结点H分配存储空间*

H->next=NULL; *从头结点开始建立单链表*

q=H;

printf("Please input the length of the linklist:"); *根据实际情况从键盘输入表长*

scanf("%d",&n);

printf("Please input the every element:"); *从键盘输入线性表的每个元素*

for(i=1;i<=n;i++)

{

p=(NODEPTR)malloc(LEN); *为当前插入链表的结点分配存储空间*

scanf("%d",&e);

p->data=e; *指向结点的指针变量p指向当前要插入的结点*

q->next=p; *指向结点的指针变量q指向当前插入结点的前趋结点,将p作为其后继赋值,完成当前结点的插入*

q=p; *当前结点完成插入之后,修改指针变量q,为下一次插入做好准备*

}

q->next=NULL;

return H;

}

void search(NODEPTR H,DataType e) *在单链表中查找指定数据元素e* {

NODEPTR p;

int i=1;

p=H->next; *指针变量p赋值为头结点的后继,从该位置开始查找整个单链表*

while(p) *当p不为空时,执行循环*

{

if(p->data!=e) *指针变量p当前指向结点的数据域不等于查找元素e*

{

p=p->next; *指针后移,继续向下查找*

i++;

continue;

}

else *否则,查找成功,输出该结点的位置*

{

printf("Searching is successful!\n");

printf("The place of the search key in the memory is:%d\n",p);

*输出该结点在内存中的存储地址,

(2)*

printf("The place of the search key in the list is:%d\n",i);

*输出该结点在线性表中的位置,(3)

*

break;

}

}

if(p->next==NULL)

printf("The linklist ");

}

NODEPTR delposi(NODEPTR H,int i) *按照指定位置i删除链表中的某个元素*

{

NODEPTR p,pre;

int m;

p=H;

for(m=1;m<=i;m++) *按照指定位置i寻找需要删除的结点*

{

pre=p;

p=p->next;

}

pre->next=p->next; *删除指定位置的结点*

free(p); *结点删除后,释放存储空间*

return H;

}

NODEPTR insafter(NODEPTR H,int i,DataType e) *在指定位置i之后插入元素e*

{

NODEPTR p,s;

int m;

s=(NODEPTR)malloc(LEN); *为插入结点分配存储空间*

s->data=e; *指针变量s指向当前的插入结点*

p=H;

for(m=0;m

p=p->next;

s->next=p->next;

p->next=s; *完成指针的修改,实现结点插入*

return H;

}

main()

{

NODEPTR H,p;

int i,e;

printf("\nFuntion:createback\n");

H=createback(H); *调用createback函数从链尾建立单链表*

printf("\nOutput the linklist:\n"); *单链表建立成功后,输出单链表的所有结点*

p=H->next;

while(p)

{

printf("%d,%d ",p->data,p->next);

p=p->next;

} *(1)*

printf("\n");

printf("\nFuntion:search\n");

printf("Please input the search key:"); *从键盘输入查找元素e*

scanf("%d",&e);

search(H,e); *调用search函数在单链表中查找关键字e*

printf("\nFuntion:delposi\n");

printf("\nOutput the linklist before deleting:\n"); *删除之前输出单链表的结点*

p=H->next;

while(p)

{

printf("%d,%d ",p->data,p->next);

p=p->next;

} *(4)*

printf("\n");

printf("Please input the delete position:"); *从键盘输入删除位置i*

scanf("%d",&i);

H=delposi(H,i); *调用delposi函数按照指定位置i删除单链表中的结点*

printf("\nOutput the linklist after deleting:\n"); *删除之后输出单链表

的所有结点*

p=H->next;

while(p)

{

printf("%d,%d ",p->data,p->next);

p=p->next;

} *(5)*

printf("\n");

printf("\nFuntion:insafter\n");

printf("\nOutput the linklist before inserting:\n"); *插入之前输出单链表的结点*

p=H->next;

while(p)

{

printf("%d,%d ",p->data,p->next);

p=p->next;

} *(6)*

printf("\n");

printf("Please input the insert position:"); *从键盘输入插入位置i*

scanf("%d",&i);

printf("Please input the insert data:"); *从键盘输入插入元素e*

scanf("%d",&e);

H=insafter(H,i,e); *调用insafter函数在指定位置插入结点*

printf("\nOutput the linklist after inserting:\n"); *插入之后输出单链表的结点*

p=H->next;

while(p)

{

printf("%d,%d ",p->data,p->next);

p=p->next;

} *(7)*

printf("\n");

}

(3)运行结果记录。

①Output the linklist:

10,0

②The place of the search key in the memory is:

③The place of the search key in the list is: 5

④Output the linklist before deleting:

10,0

⑤Output the linklist after deleting:

10,0

⑥Output the linklist before inserting:

10,0

⑦Output the linklist after inserting:

10,0

4.在提示**********blank**********下面填写合适的内容完成算法设计,并调试相应的程序。算法要求实现的功能有:(1)从头部插入结点建立单链表;(2)根据给定的元素删除单链表中的某个结点;(3)在单链表的指定位置之前插入一个结点。程序运行结果如图2-2所示。

易网返利网——淘宝购物返现

逐新时尚-品牌服装-提供:

图2-2 实验运行结果截图

#include "stdio.;

DataType e;

H=(NODEPTR)malloc(LEN); *为头结点H分配存储空间*

H->next=NULL; *从头结点开始建立单链表*

q=H; *指针变量q指向当前插入结点的前趋结点,始终指向头结点*

printf("\nPlease input the length of the linklist:");

scanf("%d",&n); *从键盘输入单链表的长度*

printf("\nPlease input the insert elemment:");

for(i=1;i<=n;i++)

{

********************blank********************

p=(NODE *)malloc(sizeof(NODE));*为新插入的结点分配存储空间*

scanf("%d",&e); *从键盘输入要插入的结点数据值*

数据结构实验报告

2013-2014-1学期 《数据结构》实验报告 专业:信息管理与信息系统 班级: 姓名: 学号: 完成日期:2013.12.01

实验名称:二叉树的创建与遍历 一、实验目的 建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍历结果。 二、实验要求 1、建立一棵用二叉链表方式存储的二叉树,并对其进行遍历(先序、中序和后序),打印输出遍历结果。 2、从键盘接受扩展先序序列,以二叉链表作为存储结构,建立二叉树,并将遍历结果打印输出。 三、实验步骤(包括所选择的二叉树的创建算法和常用三种遍 历算法的说明、完整的程序代码及必要的注释。) 1、用二叉链表创建二叉树: ①输入根结点值;②若左子树不空,则输入左子树,否则输入一个结束符‘#’;③若右子树不空,则输入右子树,否则输入一个结束符‘#’。 2、遍历该二叉树 (1) 先序遍历(DLR) 若二叉树为空,则结束返回。否则:①访问根结点;②先序遍历左子树;③先序遍历右子树。 (2) 中序遍历(LDR) 若二叉树为空,则结束返回。否则:①中序遍历左子树;②访问根结点;③中序遍历右子树。 (3) 后序遍历(LRD) 若二叉树为空,则结束返回。否则:①后序遍历

左子树;②后序遍历右子树;③访问根结点。 3、程序代码: #include #include #include #define NULL 0 typedef struct BiTNode { char data; struct BiTNode *Lchild,*Rchild; }BiTNode,*BiTree; BiTree Create(BiTree T) { char ch; ch=getchar(); if(ch=='#') T=NULL; else { if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) printf("Error!"); T->data=ch; T->Lchild=Create(T->Lchild); T->Rchild=Create(T->Rchild); } return T; } void Preorder(BiTree T) { if(T) { printf("%c",T->data); Preorder(T->Lchild); Preorder(T->Rchild); } } void zhongxu(BiTree T) { if(T) { zhongxu(T->Lchild); printf("%c",T->data);

数据结构实验报告格式

《数据结构课程实验》大纲 一、《数据结构课程实验》的地位与作用 “数据结构”是计算机专业一门重要的专业技术基础课程,是计算机专业的一门核心的关键性课程。本课程较系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法,介绍了常用的多种查找和排序技术,并做了性能分析和比较,内容非常丰富。本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。 由于以下原因,使得掌握这门课程具有较大的难度: (1)内容丰富,学习量大,给学习带来困难; (2)贯穿全书的动态链表存储结构和递归技术是学习中的重点也是难点; (3)所用到的技术多,而在此之前的各门课程中所介绍的专业性知识又不多,因而加大了学习难度; (4)隐含在各部分的技术和方法丰富,也是学习的重点和难点。 根据《数据结构课程》课程本身的技术特性,设置《数据结构课程实验》实践环节十分重要。通过实验实践内容的训练,突出构造性思维训练的特征, 目的是提高学生组织数据及编写大型程序的能力。实验学时为18。 二、《数据结构课程实验》的目的和要求 不少学生在解答习题尤其是算法设计题时,觉得无从下手,做起来特别费劲。实验中的内容和教科书的内容是密切相关的,解决题目要求所需的各种技术大多可从教科书中找到,只不过其出现的形式呈多样化,因此需要仔细体会,在反复实践的过程中才能掌握。 为了帮助学生更好地学习本课程,理解和掌握算法设计所需的技术,为整个专业学习打好基础,要求运用所学知识,上机解决一些典型问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握所用到的一些技术。数据结构中稍微复杂一些的算法设计中可能同时要用到多种技术和方法,如算法设计的构思方法,动态链表,算法的编码,递归技术,与特定问题相关的技术等,要求重点掌握线性链表、二叉树和树、图结构、数组结构相关算法的设计。在掌握基本算法的基础上,掌握分析、解决实际问题的能力。 三、《数据结构课程实验》内容 课程实验共18学时,要求完成以下六个题目: 实习一约瑟夫环问题(2学时)

数据结构题集与答案

判断题 1.数据的逻辑结构与数据元素本身的容和形式无关。(√) 2.一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。(√) 3.数据元素是数据的最小单位。(√) 4.数据的逻辑结构和数据的存储结构是相同的。(×) 5.程序和算法原则上是没有区别的,所以在讨论数据结构时可以通用。(×) 6.从逻辑关系上讲,数据结构主要分为线性结构和非线性结构。(√) 7.数据的存储结构是数据的逻辑结构的存储映像。(×) 8.数据的物理结构是指数据在计算机实际的存储形式。(√) 9.数据的逻辑结构是依赖于计算机的。(×) 10.算法是对解题方法和的描述步骤。(√) 填空题: 1.数据有逻辑结构和存储结构两种结构。 2.数据逻辑结构除了集合以外,还包括线性结构、树形结构和图形结构。 3.数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构。 4.树形结构和图形结构合称为非线性结构。 5.在树形结构中,除了树根结点以外,其余每个结点只有 1 个前驱结点。 6.在图形结构中,每个结点的前驱结点数和后继结点数可以任意多个。 7.数据的存储结构又叫物理结构。 8.数据的存储结构形式包括顺序存储、链式存储、索引存储和散列存储。 9.线性结构中的元素之间存在一对一的关系。 10.树形结构中的元素之间存在一对多的关系。 11.图形结构的元素之间存在多对多的关系。 12.数据结构主要研究数据的逻辑结构、存储结构和算法(或运算)3个方面 的容。 13.数据结构被定义为(D,R),其中D是数据的有限集合,R是D上的关系的 有限集合。 14.算法是一个有穷指令的集合。 15.算法效率的度量可以分为事先估算和事后统计法。 16.一个算法的时间复杂性是算法输入规模的函数。 17.算法的空间复杂度是指该算法所耗费的存储空间,它是该算法求解问题 规模n的函数。 18.若一个算法中的语句频度之和为T(n)=6n+3nlog2n,则算法的时间复杂度为O (nlog2n )。 若一个算法中的语句频度之和为T(n)=3n+nlog2n+n2,则算法的时间复杂度为 ___O(n*n)_______ 。 数据结构是一门研究非数值计算的程序设计总是中计算机的操作对象,以及它们之间的关系和运算的学科。 19.串的两种最基本的存储方式是顺序存储方式链式存储方式。 20.两个串相等的充分必要条件是、长度相等对应位置的字符相同。

数据结构实验报告

数据结构实验报告 一.题目要求 1)编程实现二叉排序树,包括生成、插入,删除; 2)对二叉排序树进行先根、中根、和后根非递归遍历; 3)每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来。 4)分别用二叉排序树和数组去存储一个班(50人以上)的成员信息(至少包括学号、姓名、成绩3项),对比查找效率,并说明在什么情况下二叉排序树效率高,为什么? 二.解决方案 对于前三个题目要求,我们用一个程序实现代码如下 #include #include #include #include "Stack.h"//栈的头文件,没有用上 typedefintElemType; //数据类型 typedefint Status; //返回值类型 //定义二叉树结构 typedefstructBiTNode{ ElemType data; //数据域 structBiTNode *lChild, *rChild;//左右子树域 }BiTNode, *BiTree; intInsertBST(BiTree&T,int key){//插入二叉树函数 if(T==NULL) { T = (BiTree)malloc(sizeof(BiTNode)); T->data=key; T->lChild=T->rChild=NULL; return 1; } else if(keydata){ InsertBST(T->lChild,key); } else if(key>T->data){ InsertBST(T->rChild,key); } else return 0; } BiTreeCreateBST(int a[],int n){//创建二叉树函数 BiTreebst=NULL; inti=0; while(i

3DSMAX实验报告

篇一:3dsmax实验报告 实验报告九江学院 实验报告 院(系):信息科学与技术学院课程名称:三维动画设计日期: 九江学院 实验报告 九江学院 实验报告 院(系):信息科学与技术学院课程名称:三维动画设计日期: 九江学院 实验报告 院(系):信息科学与技术学院课程名称:三维动画设计日期: 篇二:3dmax实验报告 系别 课程 专业 班级 姓名 学号基础教程计算机应用技术计算机应用技术班3ds max2010 1111111111111111111111111111111111合肥师范学院计算机科学与技术系 《3ds max动画制作》实验报告一 实验名称:基本体建模实验日期:学号:实验者姓名: 一、实验目的 1. 熟悉掌握3ds max界面操作与视图控制方法; 2. 熟练掌握物体的变动修改操作方法; 3. 熟练掌握物体的各种创建方法和成组操作方法; 4. 熟练掌握建筑构件的创建调节方法; 5. 熟练掌握复制和对齐工具的使用方法。 二、实验环境 硬件:计算机;软件:windows xp操作系统、3ds max 2010中文版。 三、实验内容及要求 实验内容一、制作“简易沙发”,其效果图如教材p24页图2-32所示。 1. 请罗列出此次实验所使用的相关工具。 计算机、3ds max2010软件、标准基本体和扩展基本体的应用 2. 请阐述实验具体操作步骤。 1)制作沙发 (1)新建一个场景文件 (2来作为沙发的“坐垫”,并设置相应的参数。 (3)使用相同的方法创建沙发的“扶手”,“靠背”,以及“脚”。复制两个沙发,并适当减少沙发的长度,如下图;2)制作茶几 (1)茶几制作分为“桌面”“茶几腿”两个部分,茶几桌面使用切角长方体制作(2)单击【创建】面板中的切角圆柱体按钮,在顶视图绘制一个切角圆柱体来作为“茶几腿” (3)复制出其余的“茶几腿”如下图:(44个圆柱体,从而起到连接架的作用如图:3)制作地面和墙壁

数据结构试题集(包含答案 完整版)

第一章概论 一、选择题 1、研究数据结构就是研究(D )。 A. 数据的逻辑结构 B. 数据的存储结构 C. 数据的逻辑结构和存储结构 D. 数据的逻辑结构、存储结构及其基本操作 2、算法分析的两个主要方面是( A )。 A. 空间复杂度和时间复杂度 B. 正确性和简单性 C. 可读性和文档性 D. 数据复杂性和程序复杂性 3、具有线性结构的数据结构是( D )。 A. 图 B. 树 C. 广义表 D. 栈 4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、(B )等5个特性。 A. 可执行性、可移植性和可扩充性 B. 可执行性、有穷性和确定性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和确定性 5、下面程序段的时间复杂度是( C )。 for(i=0;i

O(m+n) 6、算法是(D )。 A. 计算机程序 B. 解决问题的计算方法 C. 排序算法 D. 解决问题的有限运算序列 7、某算法的语句执行频度为(3n+nlog2n+n2+8),其时间复杂度表示(C )。 A. O(n) B. O(nlog2n) C. O(n2) D. O(log2n) 8、下面程序段的时间复杂度为( C )。 i=1; while(i<=n) i=i*3; A. O(n) B. O(3n) C. O(log3n) D. O(n3) 9、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的()和运算等的学科。 A. 结构 B. 关系 C. 运算 D. 算法 10、下面程序段的时间复杂度是(A )。 i=s=0; while(s

数据结构实验报告全集

数据结构实验报告全集 实验一线性表基本操作和简单程序 1.实验目的 (1)掌握使用Visual C++ 6.0上机调试程序的基本方法; (2)掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)认真阅读和掌握本章相关内容的程序。 (3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 (5)按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include iostream.h>//头文件 #include//库头文件-----动态分配内存空间 typedef int elemtype;//定义数据域的类型 typedef struct linknode//定义结点类型 { elemtype data;//定义数据域 struct linknode *next;//定义结点指针 }nodetype; 2)创建单链表

nodetype *create()//建立单链表,由用户输入各结点data域之值,//以0表示输入结束 { elemtype d;//定义数据元素d nodetype *h=NULL,*s,*t;//定义结点指针 int i=1; cout<<"建立一个单链表"<> d; if(d==0) break;//以0表示输入结束 if(i==1)//建立第一个结点 { h=(nodetype*)malloc(sizeof(nodetype));//表示指针h h->data=d;h->next=NULL;t=h;//h是头指针 } else//建立其余结点 { s=(nodetype*) malloc(sizeof(nodetype)); s->data=d;s->next=NULL;t->next=s; t=s;//t始终指向生成的单链表的最后一个节点

数学模型_第六次实验报告

实验报告(二) 院(系)理学院课程名称:数学模型日期2012年3月14 班级A0921 学号01 实验室文理楼209 专业信息与计算科学姓名计算机号12 实验 名称 拟合成绩评定 所用 软件 Matlab 教师签名 实 验 目的或要求1.直观了解拟合基本内容 2.掌握用数学软件求解拟合问题 实验步骤、心得体会实验题目: 1.通过测量10个成年男性的身高与体重,得到如下数据 身高 x/m 1.65 1.70 1.72 1.75 1.78 1.80 1.82 1.79 1.68 1.76 体重 y/kg 61 70 72 74 76 79 80 77 66 73 试求身高与体重的关系,并作出关系图 实验步骤: (1)以身高为横轴,体重为纵轴,将上述数据对(,)(1,2,,10) i i x y i 在直角坐标系中作出散点图,程序如下: x=[1.65 1.70 1.72 1.75 1.78 1.80 1.82 1.79 1.68 1.76]; %x代表身高 y=[61 70 72 74 76 79 80 77 66 73]; %y代表体重 plot(x,y,'r*'); %画出数据的散点图 运行程序后出来下图:

(2)所给的数据点(,)(1,2,,)i i x y i n = 的分布大致呈直线状态,可用直线来拟合这些数据点的曲线。 x=[1.65 1.70 1.72 1.75 1.78 1.80 1.82 1.79 1.68 1.76]; %x 代表身高 y=[61 70 72 74 76 79 80 77 66 73]; %y 代表体重 p=polyfit(x,y,1) %对(x,y)做一阶线性拟合 运行结果为: p = 103.3868 -107.6100 即用最小二乘法求得的拟合直线方程为 103.3868107.6100y x =- (3)绘制出拟合出的曲线和散点图的对比 x=[1.65 1.70 1.72 1.75 1.78 1.80 1.82 1.79 1.68 1.76]; %x 代表身高 y=[61 70 72 74 76 79 80 77 66 73]; %y 代表体重 p=polyfit(x,y,1) %对(x,y)做一阶线性拟合 z=polyval(p,x); %计算拟合后的多项式p 中x 点对应的函数值 plot(x,y,'r*',x,z) %绘制散点图

数据结构习题集包含全部答案

数据结构习题集(自编) 第一章绪论 一、选择题 1.数据结构就是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的()与运算的学科。 A.结构 B.关系 C.运算 D.算法 2.在数据结构中,从逻辑上可以把数据结构分成()。 A.动态结构与静态结构 B.紧凑结构与非紧凑结构 C.线性结构与非线性结构 D.逻辑结构与存储结构 3.线性表的逻辑顺序与存储顺序总就是一致的,这种说法()。 A.正确 B.不正确 C.无法确定 D.以上答案都不对 4.算法分析的目的就是()。 A.找出算法的合理性 B.研究算法的输人与输出关系 C.分析算法的有效性以求改进 D.分析算法的易懂性 5、算法的时间复杂度取决于( ) A.问题的规模B待处理数据的初态 C、 A与B 6.一个算法应该就是( )。 A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A与C、 7、下面关于算法说法错误的就是( ) A.算法最终必须由计算机程序实现 B、为解决某问题的算法与为该问题编写的程序含义就是相同的 C、算法的可行性就是指指令不能有二义性 D、以上几个都就是错误的 8.以下与数据的存储结构无关的术语就是( )。 A.循环队列 B、链表 C、哈希表D、栈 9.在下面的程序段中,对x的赋值语句的频度为( ) for(i=0;i

数据结构实验报告模板

2009级数据结构实验报告 实验名称:约瑟夫问题 学生姓名:李凯 班级:21班 班内序号:06 学号:09210609 日期:2010年11月5日 1.实验要求 1)功能描述:有n个人围城一个圆圈,给任意一个正整数m,从第一个人开始依次报数,数到m时则第m个人出列,重复进行,直到所有人均出列为止。请输出n个人的出列顺序。 2)输入描述:从源文件中读取。 输出描述:依次从显示屏上输出出列顺序。 2. 程序分析 1)存储结构的选择 单循环链表 2)链表的ADT定义 ADT List{ 数据对象:D={a i|a i∈ElemSet,i=1,2,3,…n,n≧0} 数据关系:R={< a i-1, a i>| a i-1 ,a i∈D,i=1,2,3,4….,n} 基本操作: ListInit(&L);//构造一个空的单链表表L ListEmpty(L); //判断单链表L是否是空表,若是,则返回1,否则返回0. ListLength(L); //求单链表L的长度 GetElem(L,i);//返回链表L中第i个数据元素的值; ListSort(LinkList&List) //单链表排序 ListClear(&L); //将单链表L中的所有元素删除,使单链表变为空表 ListDestroy(&L);//将单链表销毁 }ADT List 其他函数: 主函数; 结点类; 约瑟夫函数 2.1 存储结构

[内容要求] 1、存储结构:顺序表、单链表或其他存储结构,需要画示意图,可参考书上P59 页图2-9 2.2 关键算法分析 结点类: template class CirList;//声明单链表类 template class ListNode{//结点类定义; friend class CirList;//声明链表类LinkList为友元类; Type data;//结点的数据域; ListNode*next;//结点的指针域; public: ListNode():next(NULL){}//默认构造函数; ListNode(const Type &e):data(e),next(NULL){}//构造函数 Type & GetNodeData(){return data;}//返回结点的数据值; ListNode*GetNodePtr(){return next;}//返回结点的指针域的值; void SetNodeData(Type&e){data=e;}//设置结点的数据值; void SetNodePtr(ListNode*ptr){next=ptr;} //设置结点的指针值; }; 单循环链表类: templateclass CirList { ListNode*head;//循环链表头指针 public: CirList(){head=new ListNode();head->next=head;}//构造函数,建立带头节点的空循环链表 ~CirList(){CirListClear();delete head;}//析构函数,删除循环链表 void Clear();//将线性链表置为空表 void AddElem(Type &e);//添加元素 ListNode *GetElem(int i)const;//返回单链表第i个结点的地址 void CirListClear();//将循环链表置为空表 int Length()const;//求线性链表的长度 ListNode*ListNextElem(ListNode*p=NULL);//返回循环链表p指针指向节点的直接后继,若不输入参数,则返回头指针 ListNode*CirListRemove(ListNode*p);//在循环链表中删除p指针指向节点的直接后继,且将其地址通过函数值返回 CirList&operator=(CirList&List);//重载赋

3d,max的实训体验心得

第一篇、3ds max实训心得 3d,max的实训体验心得 为了更好的掌握这两年来所学的专业知识并能够将其融会于实际工作中,我们在学校进行了为期十天的专业实训。回顾一下这几天的学习,觉得十分充实,收获颇多,对本专业也有了更深入的认识。 在实训的前五天,我们从3ds MAX最基础的内容开始学起,由建模、材质、灯光、渲染,再到不同类型单幅作品的整体把握,都由董老师进行了全面的讲解。即便课时略显紧张,我们也完成了所有内容的学习。虽然有些内容在过去学习过,但经过了董老师的讲解却理解得更加深入细致。同样的,我们学习到了很多过去不曾接触的内容,比如多种材质,V-ray渲染,被董老师由浅入深、细致条理的解释之后,便十分容易的记住了。 实训的后五天,我们每人自选了一张图片,大家被要求在五天之内做出效果相似的作品。对于初学的我们来说,这是一个新鲜有趣的挑战。我所选的图片灯光简单,但是内有多种建模,贴图数量尤其多。这五天里我一直瞄准图片细节,不断尝试调整。得益于老师的指点监督以及同学们的互相交流,我最终做出了完整的作品。虽然由于经验不足,时间紧张,渲染效果并不如预计理想,但也达到

了我对自己提出的基本要求。 在这十天里,我们在课程和实际操作中,不仅高效的学习了许多理论与实际知识,还收获了许多宝贵的经验。更重要的是,通过董老 师,我们了解了更多关于本专业的相关信息。这使大家对未来的发展方向更有信心,也更有把握。要感谢来自东软的董老师,以及学院为我们进步所付出的投入。 第二篇、3D MAX过程训练实验报告 3d,max的实训体验心得 电脑三维表现过程训练实验报告 第三篇、3d实验报告 3d,max的实训体验心得 实验报告 实验报告

数据结构习题集答案解析_清华大学版

第1章 绪论 1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。 解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素是数据的基本单位,在计算机程序常作为一个整体进行考虑和处理。 数据对象是性质相同的数据元素的集合,是数据的一个子集。 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 存储结构是数据结构在计算机中的表示。 数据类型是一个值的集合和定义在这个值集上的一组操作的总称。 抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。 解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。 1.3 设有数据结构(D,R),其中 {}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r = 试按图论中图的画法惯例画出其逻辑结构图。 解: 1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。 解: ADT Complex{ 数据对象:D={r,i|r,i 为实数} 数据关系:R={} 基本操作: InitComplex(&C,re,im) 操作结果:构造一个复数C ,其实部和虚部分别为re 和im DestroyCmoplex(&C) 操作结果:销毁复数C Get(C,k,&e) 操作结果:用e 返回复数C 的第k 元的值 Put(&C,k,e) 操作结果:改变复数C 的第k 元的值为e IsAscending(C) 操作结果:如果复数C 的两个元素按升序排列,则返回1,否则返回0 IsDescending(C)

数据结构实验报告

《用哈夫曼编码实现文件压缩》 实验报告 课程名称数据结构 实验学期2015至2016学年第一学期 学生所在系部计算机学院 年级2014专业班级物联B142班 学生姓名杨文铎学号201407054201 任课教师白磊 实验成绩

用哈夫曼编码实现文件压缩 1、了解文件的概念。 2、掌握线性表的插入、删除的算法。 3、掌握Huffman树的概念及构造方法。 4、掌握二叉树的存储结构及遍历算法。 5、利用Haffman树及Haffman编码,掌握实现文件压缩的一般原理。 微型计算机、Windows系列操作系统、Visual C++6.0软件 根据ascii码文件中各ascii字符出现的频率情况创建Haffman树,再将各字符对应的哈夫曼编码写入文件中,实现文件压缩。 本次实验采用将字符用长度尽可能短的二进制数位表示的方法,即对于文件中出现的字符,无须全部都用S为的ascii码进行存储,根据他们在文件中出现的频率不同,我们利用Haffman算法使每个字符能以最短的二进制数字符进行存储,已达到节省存储空间,压缩文件的目的,解决了压缩需要采用的算法,程序的思路已然清晰: 1、统计需压缩文件中的每个字符出现的频率 2、将每个字符的出现频率作为叶子节点构建Haffman树,然后将树中结点引向 其左孩子的分支标“0”,引向其右孩子的分支标“1”;每个字符的编码 即为从根到每个叶子的路径上得到的0、1序列,这样便完成了Haffman 编码,将每个字符用最短的二进制字符表示。 3、打开需压缩文件,再将需压缩文件中的每个ascii码对应的haffman编码按bit 单位输出。 4、文件压缩结束。 (1)构造haffman树的方法一haffman算法 构造haffman树步骤: I.根据给定的n个权值{w1,w2,w3…….wn},构造n棵只有根结点的二叉 树,令起权值为wj。 II.在森林中选取两棵根结点权值最小的树作左右子树,构造一棵新的二叉树,置新二叉树根结点权值为其左右子树根结点权值之和。 III.在森林中删除这两棵树,同时将得到的二叉树加入森林中。 IV.重复上述两步,知道只含一棵树为止,这棵树即哈夫曼树。 对于haffman的创建算法,有以下几点说明: a)这里的Haffman树采用的是基于数组的带左右儿子结点及父结点下标作为

严蔚敏数据结构题集C语言版完整与答案

严蔚敏 数据结构C 语言版答案详解 第1章 绪论 1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。 解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素是数据的基本单位,在计算机程序常作为一个整体进行考虑和处理。 数据对象是性质相同的数据元素的集合,是数据的一个子集。 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 存储结构是数据结构在计算机中的表示。 数据类型是一个值的集合和定义在这个值集上的一组操作的总称。 抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。 解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。 1.3 设有数据结构(D,R),其中 {}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r = 试按图论中图的画法惯例画出其逻辑结构图。 解: 1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。 解: ADT Complex{ 数据对象:D={r,i|r,i 为实数} 数据关系:R={} 基本操作: InitComplex(&C,re,im) 操作结果:构造一个复数C ,其实部和虚部分别为re 和im DestroyCmoplex(&C) 操作结果:销毁复数C Get(C,k,&e) 操作结果:用e 返回复数C 的第k 元的值

数据结构实验报告及心得体会

2011~2012第一学期数据结构实验报告 班级:信管一班 学号:201051018 姓名:史孟晨

实验报告题目及要求 一、实验题目 设某班级有M(6)名学生,本学期共开设N(3)门课程,要求实现并修改如下程序(算法)。 1. 输入学生的学号、姓名和 N 门课程的成绩(输入提示和输出显示使用汉字系统), 输出实验结果。(15分) 2. 计算每个学生本学期 N 门课程的总分,输出总分和N门课程成绩排在前 3 名学 生的学号、姓名和成绩。 3. 按学生总分和 N 门课程成绩关键字升序排列名次,总分相同者同名次。 二、实验要求 1.修改算法。将奇偶排序算法升序改为降序。(15分) 2.用选择排序、冒泡排序、插入排序分别替换奇偶排序算法,并将升序算法修改为降序算法;。(45分)) 3.编译、链接以上算法,按要求写出实验报告(25)。 4. 修改后算法的所有语句必须加下划线,没做修改语句保持按原样不动。 5.用A4纸打印输出实验报告。 三、实验报告说明 实验数据可自定义,每种排序算法数据要求均不重复。 (1) 实验题目:《N门课程学生成绩名次排序算法实现》; (2) 实验目的:掌握各种排序算法的基本思想、实验方法和验证算法的准确性; (3) 实验要求:对算法进行上机编译、链接、运行; (4) 实验环境(Windows XP-sp3,Visual c++); (5) 实验算法(给出四种排序算法修改后的全部清单); (6) 实验结果(四种排序算法模拟运行后的实验结果); (7) 实验体会(文字说明本实验成功或不足之处)。

三、实验源程序(算法) Score.c #include "stdio.h" #include "string.h" #define M 6 #define N 3 struct student { char name[10]; int number; int score[N+1]; /*score[N]为总分,score[0]-score[2]为学科成绩*/ }stu[M]; void changesort(struct student a[],int n,int j) {int flag=1,i; struct student temp; while(flag) { flag=0; for(i=1;ia[i+1].score[j]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1; } for(i=0;ia[i+1].score[j]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1;

课程设计实训报告书

课程设计实训报告 书

九江学院 信息科学与技术学院 《嵌入式应用开发》课程设计 报告书 题目:有名管道通信 专业:计算机应用技术 班级:B1232 姓名:邓亲超 学号: 03 同组人员:谢辉、张想、周政拉、毛扎西 指导老师:周红波 设计时间: 10月27日~ 11月07日 目录 1.实训计划....................................................................... 错误!未定义书签。

2.问题描述....................................................................... 错误!未定义书签。 3.问题分析....................................................................... 错误!未定义书签。 4.业务逻辑....................................................................... 错误!未定义书签。 5.程序模块设计 ............................................................... 错误!未定义书签。 6.技术原理与分析 ........................................................... 错误!未定义书签。 7.系统测试....................................................................... 错误!未定义书签。 8.心得体会....................................................................... 错误!未定义书签。 9.参考文献....................................................................... 错误!未定义书签。

新闻发布管理系统实训报告

新闻发布管理系统实训报告

九江学院 信息科学与技术学院《新闻发布系统开发》课程设计(实训)报告书 题目: 专业: 班级: 姓名: 学号: 同组人员: 指导老师: 设计时间:年月日~ 年月日

目录 《新闻发布系统开发》课程设计(实训)报告书 (1) 1.课程设计(实训)计划............... 错误!未定义书签。 2.系统需求分析与功能设计............. 错误!未定义书签。 3.总体设计.......................... 错误!未定义书签。 4.数据库设计........................ 错误!未定义书签。 5.程序模块设计...................... 错误!未定义书签。 6.技术难点与分析.................... 错误!未定义书签。 7.系统测试.......................... 错误!未定义书签。 8.心得体会.......................... 错误!未定义书签。 9.参考文献.......................... 错误!未定义书签。

1.系统分析 1.1新闻添加模块 新闻添加模块功能如下: 对新闻的添加直接在管理页面点击添加新闻这个链接,这时我们可以转到另外一个新的页面:新闻添加页面。我们可以在这里要填写新闻的作者、新闻标题、新闻类型、新闻内容、新闻发布时间,填写完毕了,我们可以直接返回到新闻管理页面看到我们添加的新闻,点击新闻标题,我们就可以进入新闻的预览了。 1.2新闻修改模块 新闻修改模块功能如下: 如果我们想对我们不满意的新闻重新进行编辑,那么我们就可以在管理页面点击编辑,在这个系统里面我们设计管理员可以对新闻的标题和内容进行编辑,其它的就不可以编辑了,编辑后的新闻可以在管理页面里显示出来。 1.3新闻删除模块 新闻删除模块功能如下: 新闻的删除相对来说是比较简单的,我们只需要在管理页面对于那些我们不满意的新闻选中,然后点击删除就可以直接把新闻删除了。 1.4新闻浏览模块 新闻浏览模块功能如下: 想对新闻进行详细的浏览,我们可以点击新闻的标题直接进入网页阅读模式,在这个新的页面当中,我们不能在这里进行任何的编辑。

数据结构题集(C语言版)答案_严蔚敏编著

勇者,必以决斗之勇气与五张试卷一决雌雄;懦夫,概以鼠目之寸光量人生此战必输无疑!第1章绪论 1.1 简述下列术语:数据 数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型 解:数据是对客观事物的符号表示 在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称 数据元素是数据的基本单位 在计算机程序中通常作为一个整体进行考虑和处理 数据对象是性质相同的数据元素的集合 是数据的一个子集 数据结构是相互之间存在一种或多种特定关系的数据元素的集合 存储结构是数据结构在计算机中的表示 数据类型是一个值的集合和定义在这个值集上的一组操作的总称 抽象数据类型是指一个数学模型以及定义在该模型上的一组操作 是对一般数据类型的扩展 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别 解:抽象数据类型包含一般数据类型的概念 但含义比一般数据类型更广、更抽象 一般数据类型由具体语言系统内部定义 直接提供给编程者定义用户数据 因此称它们为预定义数据类型 抽象数据类型通常由编程者定义 包括定义它所使用的数据和在这些数据上所进行的操作 在定义抽象数据类型中的数据部分和操作部分时 要求只定义到数据的逻辑结构和操作说明 不考虑数据的存储结构和操作的具体实现 这样抽象层次更高 更能为其他用户提供良好的使用接口 1.3 设有数据结构(D R) 其中

试按图论中图的画法惯例画出其逻辑结构图 解: 1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数) 解: ADT Complex{ 数据对象:D={r i|r i为实数} 数据关系:R={} 基本操作: InitComplex(&C re im) 操作结果:构造一个复数C 其实部和虚部分别为re和im DestroyCmoplex(&C) 操作结果:销毁复数C Get(C k &e) 操作结果:用e返回复数C的第k元的值 Put(&C k e) 操作结果:改变复数C的第k元的值为e IsAscending(C) 操作结果:如果复数C的两个元素按升序排列 则返回1 否则返回0 IsDescending(C) 操作结果:如果复数C的两个元素按降序排列 则返回1 否则返回0 Max(C &e) 操作结果:用e返回复数C的两个元素中值较大的一个 Min(C &e)

数据结构实验报告图实验

图实验 一,邻接矩阵的实现 1.实验目的 (1)掌握图的逻辑结构 (2)掌握图的邻接矩阵的存储结构 (3)验证图的邻接矩阵存储及其遍历操作的实现 2.实验内容 (1)建立无向图的邻接矩阵存储 (2)进行深度优先遍历 (3)进行广度优先遍历 3.设计与编码 #ifndef MGraph_H #define MGraph_H const int MaxSize = 10; template class MGraph { public: MGraph(DataType a[], int n, int e); ~MGraph(){ } void DFSTraverse(int v); void BFSTraverse(int v); private: DataType vertex[MaxSize]; int arc[MaxSize][MaxSize]; int vertexNum, arcNum; }; #endif #include using namespace std; #include "" extern int visited[MaxSize]; template MGraph::MGraph(DataType a[], int n, int e) { int i, j, k; vertexNum = n, arcNum = e; for(i = 0; i < vertexNum; i++) vertex[i] = a[i]; for(i = 0;i < vertexNum; i++) for(j = 0; j < vertexNum; j++) arc[i][j] = 0;

相关主题