2022《数据结构》上机实验报告 链表

2024-04-09

2022《数据结构》上机实验报告 链表(通用7篇)

篇1:2022《数据结构》上机实验报告 链表

西华大学数计学院学生上机实践报告

西华数学与计算机学院上机实践报告

课程名称:数据结构 指导教师:唐剑梅 上机实践名称:

上机实践编号:1 年级: 2011 姓名:蒋俊 学

***

上机实践成绩:

上机实践日期:2012-11-6

上机实践时间:8:00-9:30

一、实验目的

1.了解线性表的逻辑结构特性,以及这种特性在计算机内的两种存储结构。

2.重点是线性表的基本操作在两种存储结构上的实现;其中以链表的操作为侧重点;并进一步学习程序设计方法。

3.掌握栈这种数据结构特性及其主要存储结构,并能在现实生活中灵活运用。

4.掌握队列这种数据结构特性及其主要存储结构,并能在现实生活中灵活运用。

5.了解和掌握递归程序设计的基本原理和方法。

6.掌握使用 C++面向对象的程序设计技术设计数据结构源程序的方法。

二、实验内容

1.熟悉前面的【程序示例2】,按照约瑟夫问题的方法2,试着不设头结点改写原来的程序,上机调试运行。

2.用链表建立通讯录。通讯录内容有:姓名、通讯地址、电话号码。

要求:(1)通讯录按姓名项的字母顺序排列;

(2)能查找通讯录中某人的信息;

[提示] 用链表来存放这个通讯录,一个人的信息作为一个结点。成链的过程可以这样考虑:先把头结点后面的

西华大学数计学院学生上机实践报告

char name[20];

// 姓名子域

NodeType *next;

// 指针域

};class Jose

//类声明

{ private: NodeType *Head;

public:

Jose(){};

~Jose(){ };

void creat();

void outs();

};void Jose::creat(){ int i=0, n;

NodeType *newp, *pre;

cout<<“n

输入总人数 n=”;cin>>n;

pre=new NodeType;

Head=new NodeType;

pre->num=1;

cout<<“n 编号”<<1<<“的人

姓名=”;

cin>>pre->name;

cout<<“n 密码”<<1<<“的人

密码=”;

cin>>pre->psw;

Head=pre;

Head->next=Head;

for(i=1;i

{ newp=new NodeType;

newp->num=i+1;

cout<<“n 编号”<

姓名=”;cin>>newp->name;

cout<<“n 密码”<

密码=”;

cin>>newp->psw;

newp->next=Head;

pre->next=newp;

pre=newp;

} }

void Jose::outs()

{ int m,i;

NodeType *q=Head, *p;

cout<<“n 输入m值(m>=2)”;cin>>m;

cout<<“n

根据m值,开始报数输出:”<

while(q->next!=q)

西华大学数计学院学生上机实践报告

{ for(i=1;inext;}

cout<<“编号为:”<num<<“ 的人的姓名:”<name<

cout<<“n 编号为:”<num<<“的人的密码:”<psw<

m=q->psw;

p->next=q->next;delete q;

q=p->next;

}

cout<<“编号为:”<num<<“的人的姓名:”<name<

cout<<“n 编号为:”<num<<“的人的密码:”<psw<

delete q;}

int main()

{

Jose h;

h.creat();

h.outs();

return 0;}

西华大学数计学院学生上机实践报告

{ char Add[20];

char name[20];

char tel[20];

};struct NodeType {

ElemType data;

NodeType *next;};class Sqlist

{ private:

NodeType *Head;

public:

Sqlist();

~Sqlist();

void creat();

void Insert(ElemType x);

void Delet(ElemType x);

void PrintOut();

};Sqlist::Sqlist(){

Head=new NodeType;Head->next=NULL;strcpy(Head->data.name,“姓名”);strcpy(Head->data.Add,“地址”);strcpy(Head->data.tel,“电话号码”);} Sqlist::~Sqlist(){

NodeType *p=Head->next;

while(p!=NULL)

{Head->next=p->next;

delete p;

p=Head->next;} } void Sqlist::creat()

//初步建立一个通讯录

{ NodeType*p,*s,*q;ElemType x;

西华大学数计学院学生上机实践报告

int a;q=Head;cout<<“n 输入姓名:”;cin>>x.name;cout<<“n 输入通讯地址:”;cin>>x.Add;cout<<“n 输入电话号码:”;cin>>x.tel;p=new NodeType;p->data=x;Head->next=p;p->next=NULL;cout<<“输入一个数。若为-1,结束输入:”<>a;

while(a!=-1){ cout<<“n 输入姓名:”;cin>>x.name;cout<<“n 输入通讯地址:”;cin>>x.Add;cout<<“n 输入电话号码:=”;cin>>x.tel;s=new NodeType;s->data=x;if(strcmp(s->data.name,p->data.name)>0){ p->next=s;s->next=NULL;

p=s;} else{ s->next=p;q->next=s;} q=q->next;

cout<<“输入一个数。若为-1,结束输入:”<>a;} } void Sqlist::Insert(ElemType x)//插入 { NodeType *p,*q,*s;s=new NodeType;

西华大学数计学院学生上机实践报告

s->data=x;q=Head;p=q->next;while(p!=NULL&&strcmp(p->data.name,x.name)<0){q=p;p=p->next;} s->next=p;q->next=s;} void Sqlist::Delet(ElemType x)//删除 { NodeType *p,*q;q=Head;p=Head->next;while(p!=NULL&&strcmp(p->data.name,x.name)!=0){q=p;p=p->next;} if(p!=NULL){ q->next=p->next;delete p;cout<<“删除结点成功”<

{ NodeType *p;p=Head->next;while(p!=NULL){ cout<

data.name<<“ ”;cout<

data.tel<<“ ”;cout<

data.Add<<“ ”;p=p->next;} cout<

Sqlist as;

cout<<“n

通讯录演示”;

do{

cout<<“nn”;

cout<<“nn

1.初步建立一个通讯录(单链表)

”;

西华大学数计学院学生上机实践报告

cout<<“nn

2.插入新的电话记录 ”;

cout<<“nn

3.删除一个电话记录”;

cout<<“nn

4.结束程序”;

cout<<“n******************************** ”;

cout<<“n

请输入你的选择(1,2,3,4)”;cin>>k;switch(k){ case 1:{ as.creat();as.PrintOut();}break;

case 2:{

cout<<“n 插入的数据 姓名”;cin>>e.name;

cout<<“n 插入的数据 电话号”;cin>>e.tel;

cout<<“n 插入的数据 地址”;cin>>e.Add;

as.Insert(e);as.PrintOut();

}break;

case 3:{

cout<<“n 被删除的姓名= ”;

cin>>e.name;

as.Delet(e);

as.PrintOut();

}break;

default:break;

}

}while(k>=1&&k<4);

cout<<“n

再见!”;

return 0;}

西华大学数计学院学生上机实践报告

西华大学数计学院学生上机实践报告

西华大学数计学院学生上机实践报告

const int MAXSIZE=100;

// 数组的容量 class SqStack

{ private:

ElemType elem[MAXSIZE];

int top;

public:

SqStack();

~SqStack(){};

void SqStack::push(ElemType e);

ElemType SqStack::pop();

void SqStack::PrintOut();

int SqStack::IsEmpty();

void f(ElemType N,ElemType M);};void SqStack::f(ElemType N,ElemType M){ SqStack s;

ElemType e;while(N){

s.push(N%M);

N=N/M;} while(!s.IsEmpty()){

e=s.pop();

if(e>=10)

{

e=e%10;

switch(e)

{

case 1:cout<<“b”<

case 2:cout<<“c”<

case 3:cout<<“d”<

case 4:cout<<“e”<

case 5:cout<<“f”<

default:cout<<“a”<

}

} else

cout<

西华大学数计学院学生上机实践报告

} cout<

{cout<<“栈满溢出”<

return;

}

else{top++;

elem[top]=e;} } ElemType SqStack::pop(){ElemType x;

if(top==0)

{ cout<< “ 栈为空,不能出栈操作”<

else { x=elem[top];

top--;

return x;} } void SqStack::PrintOut()

{int k;

cout<<“n PrintOut Data:n”;

for(k=top;k>=1;k--)cout<

cout<

else return 0;} void main(){ ElemType a,m;cout<<“请输入一个正整数:”<>a;cout<<“请输入要转换的进制:”<>m;SqStack as;as.f(a,m);}

西华大学数计学院学生上机实践报告

五、总结

通过本次实验,我熟悉了链表的操作,了解了线性表在现实生活中的运用,认识了顺序存储和链式存储这两种结构。本次上机实践基本完成了实验内容,但完成的不是很好,以后需要更加努力地掌握基本的知识。实验内容对于队列的运用没有涉及,希望以后有所涉及。

西华大学数计学院学生上机实践报告

篇2:2022《数据结构》上机实验报告 链表

课程 数据结构 _ 院 系

专业班级 实验地点

姓 名 学 号

实验时间 指导老师

数据结构上机实验报告1

一﹑实验名称:

实验一——链表

二﹑实验目的:

1.了解线性表的逻辑结构特性;

2.熟悉链表的基本运算在顺序存储结构上的实现,熟练掌握链式存储结构的描述方法;

3.掌握链表的基本操作(建表、插入、删除等)4.掌握循环链表的概念,加深对链表的本质的理解。5.掌握运用上机调试链表的基本方法

三﹑实验内容:

(1)(2)(3)(4)创建一个链表 在链表中插入元素 在链表中删除一个元素 销毁链表 四﹑实验步骤与程序

#include #include typedef struct LNode {int data;struct LNode *next;}Lnode, *LinkList;//假设下面的链表均为带头结点。void CreatLinkList(LinkList &L,int j){//建立一个链表L,数据为整数,数据由键盘随机输入。

LinkList p,q;L=(LinkList)malloc(sizeof(Lnode));L->next=NULL;q=L;

cout<<“请输入一个链表:”<

for(int i=0;i

{

p=(LinkList)malloc(sizeof(Lnode));

cin>>p->data;

p->next=q->next;

q->next=p;

q=p;

} } int PrintLinkList(LinkList &L){//输出链表L的数据元素

LinkList p;

} void LinkListLengh(LinkList &L){//计算链表L的数据元素个数。int i=0;p=L->next;if(L->next==NULL){

} cout<<“链表的数据元素为:”;while(p)

{

cout<

data<<“ ”;

p=p->next;} cout<<“链表没有元素!”<

} LinkList p;p=L->next;while(p){

i++;

p=p->next;

} cout<<“链表的数据元素个数为:”<

LinkList p,s;int j=0;p=L;

while(p&&j

} if(!p||j>i-1){ p=p->next;++j;

}

} cout<<“插入元素的位置不合理!”;return 0;s=(LinkList)malloc(sizeof(LNode));s->data=x;s->next=p->next;p->next=s;return 1;int DeleteLinkList(LinkList &L,int i){//删除链表L的第I个数据元素。

LinkList p,q;int j=0;p=L;while(p->next&&j

} if(!(p->next)||j>i-1){ p=p->next;++j;

}

} cout<<“删除元素的位置不合理!”;return 0;q=p->next;p->next=q->next;i=q->data;free(q);return 1;void DestroyLinkList(LinkList &L){//销毁链表L。

LinkList p,q;p=L->next;while(L->next!=NULL){ q=p->next;L->next=q;

free(p);} p=q;

free(L);

cout<<“链表已经被销毁!”<

LinkList L;

int i,j,x;cout<<“第一次数据结构上机实验—链表”<>j;

CreatLinkList(L,j);

LinkListLengh(L);

PrintLinkList(L);

cout<<“在第几个元素前插入:”;cin>>i;cout<<“输入插入的元素:”;cin>>x;

InsertLinkList(L,i,x);

LinkListLengh(L);

PrintLinkList(L);

cout<<“输入删除元素的位置:”;cin>>i;

DeleteLinkList(L,i);

LinkListLengh(L);

PrintLinkList(L);

cout<<“销毁程序后为:”<

DestroyLinkList(L);} 五﹑实验结果

六﹑实验心得体会:

链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址。

实验的程序设计规划(实现的功能、分几个模块、子函数)(1)编写链表创建子函数void CreatLinkList(L,j)(2)编写链表插入子函数 int InsertLinkList(LinkList &L, int i, int x)(3)链表的打印int PrintLinkList(LinkList &L)(4)编写链表删除子函数 int DeleteLinkList(LinkList &L,int i)(5)编写链表销毁子函数void DestroyLinkList(LinkList &L)(6)编写主函数Main(),通过功能菜单调用子函数(7)编译调试程序

经过多次的调试,修改,实验结果终于正确了,在这个过程中,经历了不知道怎么进行声明区的编写如包含文件,宏定义,函数声明,全局变量声明,结构体等的定义等的结合,到学会了使用先把程序主要规划为四个部分来写就简单多了,第一,定义;第二,写所要调用的子函数;第三,写主函数,调用子函数;第四就是程序的编译与调试,修改。数据结构实验需要我们对每个程序的算法有深刻的理解,才能应用到实际中去,因此我们需要在做实验之前要熟悉实验的内容,且先把所要实验的程序写出来,在实验中就可以查找错误并加以改正,这是一个成长的过程。

数据结构上机实验报告一﹑实验名称:

实验二—队列

二﹑实验目的: 1.掌握队列这种抽象数据类型的特点, 掌握栈与队列在实际问题中的应用和基本编程技巧,并能在相应的问题中选用它;2.熟练掌握循环队列和链队列的基本操作实现算法,特别是队满和队空的描述方法;

3.掌握栈与队列的数据类型描述及特点;

4.掌握栈的顺序和链式存储存表示与基本算法的实现; 5.掌握队列的链式存储表示与基本操作算法实现;6.按照实验题目要求,独立完成实际程序的编写编写、调试和运行,并通过用例数据的运行过程抓获相关屏面验证程序设计的正确性; 7.认真书写实验报告,并按时提交。

三﹑实验内容:

对顺序循环队列,常规的设计方法是使用対尾指针和对头指针,对尾指针用于指示当前的対尾位置下标,对头指针用于指示当前的対头位置下标。现要求:

(1)掌握栈和队列的特点,即后进先出和先进先出的原则。(2)设计一个使用对头指针和计数器的顺序循环队列抽象数据类型,其中操作包括:初始化,入队列,出队列,取对头元素和判断队列是否为空;

(3)编写主函数进行测试。

四﹑实验步骤与程序

#include #include #include

#define OK 1 #define ERROR 0 #define OVERFLOW 0 typedef struct QNode { int data;struct QNode *next;}QNode,*QueuePtr;typedef struct { QueuePtr front;QueuePtr rear;}LinkQueue;int InitQueue(LinkQueue &Q){

} Q.rear=Q.front=(QueuePtr)malloc(sizeof(QNode));if(!Q.rear)exit(OVERFLOW);Q.front->next=NULL;return OK;void QueueEmpty(LinkQueue Q){

} void EnQueue(LinkQueue &Q,int e){

} int EnnQueue(LinkQueue &Q,int e){ QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode));QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode));if(!p)printf(“error”);if(Q.front==Q.rear)printf(“该链队为空:”);else printf(“该链队不为空:”);p->data=e;Q.rear->next=p;Q.rear=p;printf(“元素%d入队成功”,e);

} if(!p)return ERROR;p->data=e;Q.rear->next=p;Q.rear=p;

return OK;void DeQueue(LinkQueue &Q){

} void GetHead(LinkQueue &Q){ QueuePtr p;QueuePtr p;if(Q.front==Q.rear)printf(“该链队为空”);p=Q.front->next;Q.front->next=p->next;if(Q.rear==p)Q.rear=Q.front;free(p);printf(“队首元素删除成功”);

} if(Q.front==Q.rear)printf(“该链队为空”);p=Q.front->next;printf(“队首元素为:%d”,p->data);void OutQueue(LinkQueue &Q){

} void LengthQueue(LinkQueue &Q){

int f=0;QueuePtr p;if(Q.front==Q.rear)QueuePtr p;if(Q.front==Q.rear)printf(“该链队为空”);p=Q.front->next;while(p!=Q.rear->next){

} printf(“%d%,”,p->data);p=p->next;

} printf(“该队列的长度为:%d”,f);else {

} p=Q.front->next;while(p!=Q.rear->next){

} printf(“该队列的长度为:%d”,f);p=p->next;f++;void main(){

system(“cls”);int flag=1,i;LinkQueue Q;InitQueue(Q);printf(“************************链队列功能菜单***********************n”);printf(“1:初始化链队列,2:判断链队列是否为空, 3:进入队列,4:取出队首元素n”);printf(“5:输出该队列的所有元素,6:输出该队列的长度,7:结束程序,8:清屏n”);

while(flag){

printf(“n请输入操作符:”);scanf(“%d”,&i);switch(i){ case 1:

int e,n,k;printf(“请输入队列的长度:”);scanf(“%d”,&n);printf(“请输入队列的元素:”);for(e=1;e<=n;e++){

} printf(“初始化链队成功”);break;scanf(“%d”,&k);EnnQueue(Q,k);case 2: QueueEmpty(Q);

break;case 3:

int j;printf(“请输入要进入队列的元素”);scanf(“%d”,&j);EnQueue(Q,j);break;case 4: GetHead(Q);break;case 5:

printf(“该队列的元素为:”);OutQueue(Q);break;

case 6: LengthQueue(Q);break;case 7: flag=0;break;case 8: system(“cls”);} break;

} } 五﹑实验结果

六﹑实验心得体会:

程序主要构造了主函数main()和 InitQueue(),QueueEmpty()EnQueue(),OutQueue()等调用函数,实现了队列的创立,队列是否为空的判断,入队和出队等功能。

通过此次实验,加深了对队列的存储结构的了解,同时也对程序设计能力有了提高,加深了对队列先进先出性质的理解,它允许在表的一端进行插入,在另一端删除元素,这和我们日常生活中的排队是一致的,最早进入队列的元素最早离开。我们往往写不出程序,这其中的原因我觉得是对程序的结构不是很了解,对实验的内容也不熟练的结果,数据结构给我们许多程序的算法和模型,对我们写程序的思维有很大的锻炼,我们应珍惜每次上机实验的机会去实践课堂上所学的东西并从中发现问题,从而达到提升写程序的能力。

数据结构上机实验报告一﹑实验名称:

实验三—二叉树的遍历

二﹑实验目的:

1、熟悉二叉树的结构特性,了解相应的证明方法;

2、掌握二叉树的生成,掌握二叉树的定义和存储表示,学会建立一棵特定二叉树的方法;

3、理解二叉树的三种遍历方法:先序遍历、中序遍历和后序遍历;

4、学会编写实现树的各种操作的算法。

二、实验内容:

1、使用类定义实现二叉树,补充完整所缺的函数,并实现创建和遍历二叉树的基本操作;

2、编程实现在二叉链表这种存储方式下,实现二叉的遍历,可采用递归或者非递归实现,遍历算法为在先序、中序和后序遍历算法。

三、实验步骤与程序:

#include #include #include typedef struct BiTNode { char data;struct BiTNode *lchild,*rchild;} BiTNode,*BiTree;//定义结点类型 BiTree CreateBiTree()//创建树 { char p;BiTree T;scanf(“%c”,&p);if(p==)T=NULL;else { T=(BiTNode *)malloc(sizeof(BiTNode));//为结点开辟空间 T->data=p;T->lchild=CreateBiTree();T->rchild=CreateBiTree();} return(T);}

void PreOrder(BiTree T)//先序 { if(T!=NULL){ printf(“%c”,T->data);PreOrder(T->lchild);PreOrder(T->rchild);} } void InOrder(BiTree T)//中序 { if(T!=NULL){ InOrder(T->lchild);printf(“%c”,T->data);InOrder(T->rchild);} } void PostOrder(BiTree T)//后序 { if(T!=NULL){ PostOrder(T->lchild);PostOrder(T->rchild);printf(“%c”,T->data);} } void main()//主函数 {

printf(“------------二叉树的遍历-------------n”);printf(“请输入要遍历的数:”);BiTree Ta;Ta=CreateBiTree();printf(“先序遍历:”);printf(“n”);PreOrder(Ta);printf(“n”);printf(“中序遍历:”);printf(“n”);InOrder(Ta);printf(“n”);printf(“后序遍历:”);printf(“n”);PostOrder(Ta);} 五﹑实验结果

六﹑实验心得体会:

实验的程序设计规划(实现的功能、分几个模块、子函数)(1)先序遍历递归算法函数:void PreOrder(BiTree T)(2)中序遍历递归算法函数:void InOrder(BiTree T)(3)后续遍历递归算法函数:void PostOrder(BiTree T)(4)主函数的实现:void main()

在实验前我认真阅读关于二叉树的实现的内容,为编程实现第一步,本次实验通过按上述的实验步骤一步步实现的,实验过程中出现了一些错误,经过一步步的调试,修改错误,得到了二叉树的遍历用递归运算的方法的程序。通过这个实验,我体会到了理解数据结构的重要性,这有真正理解了定义数据类型的好处,才能用好这样一种数据结构。二叉树的先序,中序与后序的输出都用了递归的算法,而且用起来不是很复杂,这使我更进一步理解了函数递归调用并得到灵活运用;在实现算法上,从算法的效率看,递归方法书写形式较为简洁,更为直观,一般具有较好的空间效率。

总之,不管做什么实验,我们在做实验前都要先预习,对所做的实验有较深的理解,在做实验的时候需要很严谨,仔细的查找错误,从而能在实验中收获知识,提升自己。

数据结构上机实验报告4 一﹑实验名称:

实验四—查找

二﹑实验目的:

1、熟悉掌握顺序表的查找方法;

2、熟练掌握二叉排序树的构造方法和查找算法

3、掌握描述查找过程的判定树的构造方法,以及按照定义计算各种查找方法在等概率情况下查找成功时的平均查找长度;

4、学会定义线性表的储存类型,实现C++程序的基本结构对线性表的一些基本操作和具体的函数定义;

5、掌握顺序表的基本操作,实现顺序表的查找的等基本运算;

6、掌握对于多函数程序的输入,编辑,调试和运算过程。

二、实验内容:

1、实现顺序表的查找算法

2、关于衡量查找的主要操作—查找的查找平均效率的平均长度的讨论。

三、实验步骤与程序:

#include #define MAX_SIZE 100 typedef struct{ int key;}element;

element list[MAX_SIZE];

int seqsearch(element list[],int searchnum,int num);int main(){

int i,num,searchnum,k;

printf(“---------------数据结构查找实验-------------n”);printf(“请输入数据元素的个数:”);scanf(“%d”,&num);printf(“请输入数据的元素:n”);for(i=0;i

printf(“请输入要查询的数据元素:”);scanf(“%d”,&searchnum);k=seqsearch(list,searchnum,num);if(k!=-1){ printf(“所查询元素的下标为:”);printf(“%dn”,k);} else printf(“查询元素不存在。n”);} return 0;}

int seqsearch(element list[],int searchnum,int num){ int j;

list[num].key=searchnum;

for(j=0;list[j].key!=searchnum;j++);return j

六﹑实验心得体会:

实验的程序设计规划为先写一个主函数int main(),再写一个查找的子函数int seqsearch(element list[],int searchnum,int num),主函数通过调用子函数的方法实现程序的设计。

所谓“查找”即为在一个众多的数据元素(或记录)的查找表中找出某个“特定的”数据元素(或记录),通过本次实验,我更进一步的了解数据结构程序实验设计实现算法的基本模型,和算法实现等基本内容,学会了顺序表的查找方法。

数据结构上机实验报告5 一﹑实验名称:

实验五—内部排序

二﹑实验目的:

1、通过实现下述实验内容,学习、实现、对比各种排序算法,掌握各种排序算法的优劣,以及各种算法使用的情况,并加以灵活应用。

2、掌握各种排序时间复杂度的分析方法。

二、实验内容:

1、插入排序:依次将待排序的序列中的每一个记录插入到先前排序好的序列中,直到全部记录排序完毕。

2、快速排序:首先选择一个基准,将记录分割为两部分,左支小于或等于基准,右支则大于基准,然后对两部分重复上述过程,直至整个序列排序完成。

3、讨论各种内部排序方法的基本思路,算法特点,排序过程及它们的时间复杂度的分析。

三、实验步骤与程序:

#include void main(){

} int x;void charu();void kuaisu();printf(“----------内部排序---------n”);printf(“

1、插入排序:n”);printf(“

2、选择排序:n”);printf(“请根据序号选择:”);scanf(“%d”,&x);if(x==1)charu();else kuaisu();void charu(){ int a[7],j,i,m;

printf(“插入排序n”);

printf(“请输入个您想排序的数据:n”);

for(i=0;i<7;i++)scanf(“%d”,&a[i]);

for(j=1;j<7;j++)

{ m=a[j];

for(i=j-1;i>=0;i--)

{

if(a[i]

break;

else a[i+1]=a[i];

}

a[i+1]=m;

}

printf(“排序成功:”);

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

printf(“ %d”,a[i]);

printf(“n”);} quick(int first,int end,int L[]){ int left=first,right=end,key;

key=L[first];

while(left

{ while((left=key))

right--;

if(left

L[left++]=L[right];

while((left

left++;

if(left

L[left]=key;

return left;

}

quick_sort(int L[],int first,int end)

{ int split;

if(end>first)

{ split=quick(first,end,L);

quick_sort(L,first,split-1);

quick_sort(L,split+1,end);

}

} void kuaisu(){

int a[7],i;

printf(“快速排序n”);

printf(“请输入个您想排序的数据:n”);

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

scanf(“%d”,&a[i]);

quick_sort(a,0,9);

printf(“排序成功:”);

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

printf(“ %d”,a[i]);

printf(“n”);} 五﹑实验结果:

六﹑实验心得体会:

篇3:结构力学上机实验报告

姓名:

学号:

指导老师:肖方红

1.作图示刚架的FN、FS、M图,已知各杆截面均为矩形,柱截面宽0.4m,高0.4m, 大跨梁截面宽0.35m,高0.85m,小跨梁截面宽0.35m,高0.6m,各杆E=3.0×104 MPa。10分

解:统一单位力kN长度m那么弹性模量单位为kPa。输入输出数据如下:

表一:1题输入数据

******************************************************************************************* *

* *

sjl1 gangjia 2011.10.24

* *

* ******************************************************************************************* 3e7 1

0.16

213e-5 2

0.16

213e-5

0.2975

1791e-5 2

0.2975

1791e-5 4

0.21

63e-4 5

0.21

63e-4 5

0.16

213e-5 8

0.16

213e-5 7

0.16

213e-5 9

0.16

213e-5 0

0 0

4.5 0

7.7 7.2 7.7 7.2 4.5 11 7.7 11 4.5 7.2 0 11 0 11 0 12 0 13 0 81 0 82 0 83 0 91 0 92 0 93 0 1 6

0

0

-15 7 1

4.5 2

3.2 3-196 7.2 4-36

7.2 5-196 3.8 6-36

3.8 6-26

2.7 表二:1题输出数据

Input Data File Name: sjl1.txt

Output File Name: sjl1out.txt

************************************************************************ *

*

sjl1 gangjia 2011.10.24

*

************************************************************************

The Input Data

The General Information

E

NM

NJ

NS

NLC

3.000E+07

The Information of Members

member start end

A

I

1.600000E-01

2.130000E-03

1.600000E-01

2.130000E-03

2.975000E-01

2.975000E-01

2.100000E-01

2.100000E-01

1.600000E-01

1.600000E-01

1.600000E-01

1.600000E-01

The Joint Coordinates

joint

X

Y

.000000

.000000

.000000

4.500000

.000000

7.700000

7.200000

7.700000

7.200000

4.500000

11.000000

7.700000

11.000000

4.500000

7.200000

.000000

11.000000

.000000

The Information of Supports

IS

VS

.000000

.000000

.000000

.000000

.000000

.000000

.000000

.000000

.000000

1.791000E-02 1.791000E-02 6.300000E-03 6.300000E-03 2.130000E-03 2.130000E-03 2.130000E-03 2.130000E-03

Loading Case 1

The Loadings at Joints

NLJ=

joint

FX

FY

FM

.000000

.000000

-15.000000

The Loadings at Members

NLM=

member type

VF

DST

20.000000

4.500000

20.000000

3.200000

-196.000000

7.200000

-36.000000

7.200000

-196.000000

3.800000

-36.000000

3.800000

-26.000000

2.700000

The Results of Calculation

The Joint Displacements

joint

u

v

rotation

3.076236E-21

-7.549352E-20

-7.540649E-21

4.636735E-03

-7.077518E-04

-4.359988E-04

5.924037E-03

-1.134844E-03

-3.169292E-03

5.813626E-03

-2.178472E-03

1.834783E-03

4.684030E-03

-1.341626E-03

1.384534E-05

5.788766E-03

-5.408925E-04

4.571795E-04

4.685631E-03

-3.674969E-04

-4.586878E-05

3.967738E-21

-1.431068E-19

-8.907750E-21

3.856026E-21

-3.919967E-20

-8.741193E-21

The Terminal Forces

member

FN

FS start

754.935194

75.762357

end

-754.935194

14.237643 start

640.638123

-72.863183

end

-640.638123

136.863184

M 109.156485

29.274120-96.133965-239.428195 start

136.863184

640.638123

239.428195

end

-136.863184

770.561840

-707.153563 start

-58.625540

114.297071

66.859844

end

58.625540

144.902922

-177.040903 start

41.214402

484.706696

517.753681

end

-41.214402

260.093294

-90.988284 start

-2.654138

30.896570

-29.106007

end

2.654138

131.903429

-142.007053 start

1255.268536

95.648782

116.676201

end

-1255.268536

start

1431.068027

end

-1431.068027

start

260.093294

end

-260.093294 start

391.996723

end

-391.996723

钢架的FN图:

-95.648782

39.677380

-39.677380

41.214402

-41.214402

38.560264

-38.560264

189.399883 89.077501 89.470709 55.897795 75.988284 87.411931 86.109258

钢架的Fs图:

钢架的M图:

2、计算图示桁架各杆的轴力。已知A=2400mm2,E=2.0×105 MPa。5分

解:该桁架各节点均为铰结,为了使计算简便,所有节点均作为钢节点,为此在输入数据时,各杆截面二次矩取很小的值,本题取1×10-20 本题有30根杆件,17个节点,输入输出数据如下:

表三:2题输入数据

************************************************************************** *

*

*

sjl2 gangjia 2011.10.24

* *

* ************************************************************************** 2e8 1

24e-4

1e-20 1

24e-4

1e-20 2

24e-4

1e-20 2

24e-4

1e-20 3

24e-4

1e-20 5

24e-4

1e-20 3

24e-4

1e-20 3

24e-4

1e-20 4

24e-4

1e-20 6

24e-4

1e-20 4

24e-4

1e-20 6

24e-4

1e-20 7

24e-4

1e-20 7

24e-4

1e-20 8

24e-4

1e-20 9

24e-4

1e-20 9

24e-4

1e-20 11

24e-4

1e-20 10

24e-4

1e-20 11

24e-4

1e-20 11

24e-4

1e-20 12

24e-4

1e-20 15

24e-4

1e-20 15

24e-4

1e-20 12

24e-4

1e-20 14

24e-4

1e-20 13

24e-4

1e-20 14

24e-4

1e-20 15

24e-4

1e-20 17

24e-4

1e-20 0

0 0 1

3.75 2

3.5 1

4.75 2

5.5 3

5.25 3

6.25 4 5

6.25 5

5.25 6

5.5 7

4.75 7

3.75 6

3.5 8 8

0 11

0 12

0 171

0 172

0 9 2 0-12 0 5 0-5

0 6 0-5

0 8 0-5

0 9 0-5

0 10 0-5

0 12 0-5

0 13 0-5

0 16 0-12 0 0

表四:2题输出数据

Input Data File Name: sjl2.txt

Output File Name: sjl2out.txt

************************************************************************ *

*

sjl2 gangjia 2011.10.24

*

************************************************************************

The Input Data

The General Information

E

NM

NJ

NS

NLC

2.000E+08

The Information of Members

member start end

A

I

2.400000E-03

1.000000E-20

2.400000E-03

1.000000E-20

2.400000E-03

1.000000E-20

2.400000E-03

1.000000E-20

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

2.400000E-03

The Joint Coordinates

joint

X

Y

.000000

.000000

.000000

4.000000

1.000000

3.750000

2.000000

3.500000

1.000000

4.750000

1.000000E-20 1.000000E-20 1.000000E-20 1.000000E-20 1.000000E-20 1.000000E-20 1.000000E-20 1.000000E-20 1.000000E-20 1.000000E-20 1.000000E-20 1.000000E-20 1.000000E-20 1.000000E-20 1.000000E-20 1.000000E-20 1.000000E-20 1.000000E-20 1.000000E-20 1.000000E-20 1.000000E-20

1.000000E-20

1.000000E-20

1.000000E-20

1.000000E-20

1.000000E-20

2.000000

5.500000

3.000000

5.250000

3.000000

6.250000

4.000000

7.000000

5.000000

6.250000

5.000000

5.250000

6.000000

5.500000

7.000000

4.750000

7.000000

3.750000

6.000000

3.500000

8.000000

4.000000

8.000000

.000000

The Information of Supports

IS

VS

.000000

.000000

171

.000000

172

.000000

Loading Case 1

The Loadings at Joints

NLJ=

joint

FX

FY

.000000

-12.000000

.000000

-5.000000

.000000

-5.000000

.000000

-5.000000

.000000

-5.000000

.000000

-5.000000

.000000

-5.000000

.000000

-5.000000

.000000

-12.000000

The Loadings at Members

NLM=

0

The Results of Calculation

FM.000000.000000.000000.000000.000000.000000.000000.000000.000000

The Joint Displacements

joint

u

v

rotation

-5.714286E-22

-2.950000E-21

-5.676597E-05

1.682251E-04

-1.625000E-04

-1.236830E-04

1.583218E-04

-2.705629E-04

-3.193943E-05

1.833298E-04

-2.161644E-04

2.716851E-05

2.265671E-04

-2.809795E-04

-4.829399E-05

1.786882E-04

-2.578310E-04

2.349593E-05

1.918510E-04

-2.279964E-04

1.336072E-04

-2.384131E-04

1.857079E-18

-1.009603E-04

-1.336072E-04

-2.384131E-04

-1.918510E-04

-2.279964E-04

-1.786882E-04

-2.578310E-04

-2.265671E-04

-2.809795E-04

-1.583218E-04

-2.705629E-04

-1.833298E-04

-2.161644E-04

-1.682251E-04

-1.625000E-04

5.714286E-22

-2.950000E-21

The Terminal Forces

member

FN

start

19.500000

end

-19.500000 start

11.517511

end

-11.517511 start

9.375000

end

-9.375000 start

-7.730823

end

7.730823 start

-5.153882

end

5.153882 start

9.375000

end

-9.375000 start

5.000000

end

-5.000000 start

-5.038911

end

5.038911 start

10.000000

end

-10.000000

start

-2.576941

end

2.576941

4.762947E-05 1.067515E-04 9.122545E-19-1.067515E-04-4.762947E-05-2.349593E-05 4.829399E-05 3.193943E-05-2.716851E-05 1.236830E-04 5.676597E-05

FS

.000000

.000000

.000000

.000000

.000000

.000000

.000000

.000000

.000000

.000000

.000000

.000000

.000000

.000000

.000000

.000000

.000000

.000000

.000000

.000000

M.000000.000000.000000.000000.000000.000000.000000.000000.000000.000000.000000.000000.000000.000000.000000.000000.000000.000000.000000.000000

start

1.439689

.000000

.000000

end

-1.439689

.000000

.000000

start

9.375000

.000000

.000000

end

-9.375000

.000000

.000000

start

5.000000

.000000

.000000

end

-5.000000

.000000

.000000

start

-3.599222

.000000

.000000

end

3.599222

.000000

.000000

start

9.375000

.000000

.000000

end

-9.375000

.000000

.000000

start

9.375000

.000000

.000000

end 10

-9.375000

.000000

.000000

start

-3.599222

.000000

.000000

end 11

3.599222

.000000

.000000

start 11

5.000000

.000000

.000000

end 10

-5.000000

.000000

.000000

start 10

9.375000

.000000

.000000

end 12

-9.375000

.000000

.000000

start 11

-2.576941

.000000

.000000

end 12

2.576941

.000000

.000000

start 11

1.439689

.000000

.000000

end 15

-1.439689

.000000

.000000

start 12

9.375000

.000000

.000000

end 13

-9.375000

.000000

.000000

start 15

10.000000

.000000

.000000

end 12

-10.000000

.000000

.000000

start 15

-5.153882

.000000

.000000

end 14

5.153882

.000000

.000000

start 12

-5.038911

.000000

.000000

end 14

5.038911

.000000

.000000

start 14

5.000000

.000000

.000000

end 13

-5.000000

.000000

.000000

start 13

9.375000

.000000

.000000

end 16

-9.375000

.000000

.000000

start 14

-7.730823

.000000

.000000

end 16

7.730823

.000000

.000000

start 15

11.517511

.000000

.000000

end 17

-11.517511

.000000

.000000

start 17

19.500000

.000000

.000000

end 16

-19.500000

.000000

.000000

钢架轴力图(其中拉力为正,压力为负):

3.作图示连续梁的FS、M图,已知各梁截面面积A=6.5m2,惯性矩I=5.50m4,各杆E=3.45×104MPa。5分

解:该结构为一超静定结构,输入输出数据如下:

表五:3题输入数据

************************* *

* * sjl3 lxl 2011.10.24

* *

* ************************* 345e5 1

6.5

5.5 2

6.5

5.5 3

6.5

5.5 0

0 40

0 80

0 120

0 11

0 12

0 22

0 32

0 42

0 0 4 1

-10.5

2

-10.5

2

-320

3

-10.5

表六:3题输出数据

Input Data File Name: sjl3.txt

Output File Name: sjl3out.txt

*************************

*

*

* sjl3 lxl 2011.10.24

*

*

*

*************************

The Input Data

The General Information

E

NM

NJ

NS

NLC

3.450E+07

The Information of Members

member start end

A

I

6.500000E+00

5.500000E+00

6.500000E+00

5.500000E+00

6.500000E+00

5.500000E+00

The Joint Coordinates

joint

X

Y

.000000

.000000

40.000000

.000000

80.000000

.000000

120.000000

.000000

The Information of Supports

IS

VS

.000000

.000000

.000000

.000000

.000000

Loading Case 1

The Loadings at Joints

NLJ=

0

The Loadings at Members

NLM=

member type

VF

DST

-10.500000

40.000000

-10.500000

40.000000

-320.000000

20.000000

-10.500000

40.000000

The Results of Calculation

The Joint Displacements

joint

u

v

rotation

0.000000E+00

6.600000E-21

-5.480896E-05

0.000000E+00

-6.600000E-21

-3.794466E-05

0.000000E+00

-6.600000E-21

3.794466E-05

0.000000E+00

6.600000E-21

5.480896E-05

The Terminal Forces

member

FN

FS

M start

.000000

144.000000

.000000

end

.000000

276.000000

-2640.000000 start

.000000

370.000000

2640.000000

end

.000000

370.000000

-2640.000000 start

.000000

276.000000

2640.000000

end

.000000

144.000000

.000000

连续梁的Fs图:

篇4:2022《数据结构》上机实验报告 链表

1、报告要求使用学校统一要求的实验报告纸,书写整齐,结构清晰。

2、程序设计及实验报告独立。

3、实验报告里不需要附全部代码,如果需要可在算法思路中写主要代码。

4、编写的程序可在上机课时让老师检查,源代码在上机结束以后上交。

实验报告依照下面的模板来书写。报告要简洁明了,一个实验报告只有3页,书写时字体大小不要太大,以免写不下。

实验报告内容参照如下模板:

【实验目的和要求】

见实验任务书

【实验题目】

见实验任务书

【实验内容】

1.抽象数据类型定义

(说明你设计或使用的数据结构所包含的基本操作及功能)

2.存储结构定义及算法思路

(包括数据结构的存储结构定义、数据元素的类型定义及主函数的算法实现思路)

3.实验结果与分析

(包括运行结果截图、结果分析等)

4.心得体会

(记录实验感受、上机过程中遇到的困难及解决办法、遗留的问题、意见和建议等。)

篇5:地质数据库上机实验报告

班级:姓名:学号:成绩:

五、实习中存在的主要问题

一、实习名称

二、实习目的三、实习内容

篇6:数据结构上机实验--图

实验内容:图的基本操作

实验要求:

1)图的遍历与基本操作要作为函数被调用.2)把自己使用的图结构明确的表达出来.3)基本上实现每个实验题目的要求.分组要求:可单独完成,也可两人一组。

实验目的:

1)熟悉C/C++基本编程,培养动手能力.2)通过实验,加深对图的理解.评分标准:

1)只完成第一和第二题,根据情况得4,5分;

2)完成前3题,根据情况得5至7分;

3)在2)基础上,选做四)中题目,根据情况得8至10分。

题目:

一)建立一个无向图+遍历+插入

(1)以数组表示法作为存储结构,从键盘依次输入顶点数、弧数与各弧信息建立一个无向图;

(2)对(1)中生成的无向图进行广度优先遍历并打印结果;

(3)向(1)中生成的无向图插入一条新弧并打印结果;

二)建立一个有向图+遍历+插入+删除

(1)以邻接表作为图的存储结构,从键盘输入图的顶点与弧的信息建立一个有向图;

(2)对(1)中生成的有向图进行深度优先遍历并打印结果;

(3)在(1)中生成的有向图中,分别插入与删除一条弧并打印其结果;

(4)在(1)中生成的有向图中,分别插入与删除一个顶点并打印结果;

(5)在(1)中生成的有向图中,各顶点的入度与出度并打印结果;

三)基本应用题

(1)编写算法,判断图中指定的两个顶点是否连通。

(2)编写算法,判断图的连通性。如果不连通,求连通分量的个数

(3)编写算法,判断图中任意两个顶点的连通性

(4)编写算法,判断图中是否存在回路。

(5)实现图的广度优先搜索算法。

四)高级应用题

(1)实现Prim算法

(2)实现Kruskal算法

(3)实现迪杰斯特拉算法

(4)实现拓扑排序算法

篇7:数据库系统上机实验题

一、学生学习系统的基本表

学生:s(sno,sname , sex , age , dept);表中属性分别为:学号,姓名,性别,年龄和

系名。

课程:c(cno , cname , tname);表中属性分别为:课号,课名,教师名。选课:sc(sno , cno , grade);表中属性分别为:学号,课号和成绩。

要求:利用SQL语句创建上面三个基本表,包括:主键,外键定义。

有针对性地输入一些实验数据。

二、利用SQL语句,在上面三个基本表中,完成如下的功能

1.查找学号2至10号学生的学号、姓名和系名。

2.查找女同学的人数。

3.查找学号2至10号学生中,女同学的人数。

4.查找男、女同学各有多少人(注:输出性别和人数)。

5.查找‘CS’系中,男、女同学各有多少人(注:输出性别和人数)

6.查找年龄在18至20岁之间的所有男同学的学号、姓名和系名。

7.查找所有学生选修课程的门数。

8.查找学号2至15号学生中,英语成绩超过80分的学生学号和姓名。

9.查找没有学习‘物理’课程的学生姓名和系名。

10.查找‘王明’同学所学课程的门数。

11.统计‘王明’同学所学各门课程的平均分数。

12.统计英语成绩高于该课程平均成绩的人数。

13.查找查找至少选修了‘王一’和‘王二’老师所授课程的学生学号与姓名。

14.查找‘CS’系比‘MA’系的学生年龄都小的学生姓名和系名。

15.统计每个学生的总分,输出学生的学号和总分,总分按降序排列。

16.查找学号比‘王一’同学大,而年龄比他小的学生学号、姓名和年龄。

17.查找年龄大于女同学的平均年龄的男同学的姓名与年龄。

18.查找只选修了一门课程的同学的学号和姓名。

19.查找‘CS’系学生中,没有选修‘王一’老师课程的学号、姓名和系名。

20.查找至少选修了3门课程的学生学号和姓名。

21.查找每门课程的最高分和最低分。(注:输出课号、最高分和最低分)

22.采用查询视图方式完成21题的功能:

利用视图方式的步骤:

建立视图,如:gdf(cno,max,min)属性:课号、最高分和最低分。利用SELECT语句对视图gdf查询显示。

在完成以上题目后,再利用SQL更新语句完成如下操作功能:

1.将所有学生的年龄增加1岁。

2.将‘物理’课程不及格的成绩改为0分。

3.删除‘王五’老师的任课信息。

4.将一门课的成绩大于等于80分学生的学号、姓名和系名插入到一个已存在(要建

上一篇:“欢乐脱口秀”比赛的活动策划书下一篇:朵朵玉兰迎春开美文