北理工数据结构上机实验报告1
- 格式:docx
- 大小:46.80 KB
- 文档页数:4
实验一实验报告表
实验名称:图灵机模型与计算机硬件系统虚拟拆装
学号:姓名:班级:实验时间:
实验报告表1-1图灵机模型中的主要组成部分及作用
在纸带上左右移动
说明:可根据需要加行
实验报表1-2冯.诺依曼计算机体系结构的功能描述
实验报告表1-3 实验所使用的计算机硬件配置登记表
实验报告表1-4 微型计算机拆卸顺序记录表
实验报告表1-5 微型计算机安装顺序记录表
实验报告表1-6 微型计算机安装顺序调整记录表
说明:可根据需要加行
实验报告表1-7 6个指定部件的安装顺序记录表
实验报告表1-8 扩充内存
实验报告表1-9更换显卡
【本文档内容可以自由复制内容或自由编辑修改内容期待你的好评和关注,我们将会做得更好】。
北京理工大学计算机实验一报告表北京理工大学计算机实验一报告一、实验目的:1. 了解计算机实验室的硬件设备,熟悉计算机的组成和工作原理;2. 掌握计算机的基本操作和调试方法,熟悉计算机的操作系统和软件环境;3. 学习使用计算机进行数据输入、处理和输出。
二、实验内容:1. 硬件设备:了解计算机的主要硬件组成,包括中央处理器(CPU)、内存、硬盘、显卡等;2. 操作系统:熟悉计算机的操作系统,学习操作系统的基本功能和操作方法;3. 软件环境:了解计算机的软件环境,学习使用常用的办公软件和编程工具;4. 数据输入:学习使用键盘和鼠标进行数据输入,了解数据的输入格式和方式;5. 数据处理:学习使用计算机进行数据处理,包括数据的存储、计算和分析;6. 数据输出:学习使用计算机进行数据输出,包括打印、显示和保存等方式。
三、实验步骤:1. 硬件设备:了解计算机的主要硬件组成,包括CPU、内存、硬盘、显卡等,熟悉各个硬件的功能和作用;2. 操作系统:熟悉计算机的操作系统,学习操作系统的基本功能和操作方法,包括开机、关机、重启等;3. 软件环境:了解计算机的软件环境,学习使用常用的办公软件和编程工具,如Microsoft Office和Visual Studio等;4. 数据输入:学习使用键盘和鼠标进行数据输入,了解数据的输入格式和方式,如文本、数字、图像等;5. 数据处理:学习使用计算机进行数据处理,包括数据的存储、计算和分析,如使用Excel进行数据分析;6. 数据输出:学习使用计算机进行数据输出,包括打印、显示和保存等方式,如使用打印机打印数据报告。
四、实验结果:本次实验我们成功地熟悉了计算机的硬件设备和软件环境,掌握了计算机的基本操作和调试方法。
我们学会了使用键盘和鼠标进行数据输入,使用计算机进行数据处理和输出。
通过实验,我们进一步了解了计算机的组成和工作原理,对计算机的操作系统和软件环境有了更深入的了解。
《数据结构与算法统计》实验报告 学院: 班级: 学号: 姓名:一、实验目的 1.熟悉VC++6.0环境,学习使用C++实现链表的存储结构; 2.通过编程,上机调试,进一步理解线性表、链表、环表的基本概念。
二、实验内容采用单向环表实现约瑟夫环。
请按以下要求编程实现:① 从键盘输入整数m,通过create函数生成一个具有m个结点的单向环表。
环表中的结点编号依次为1,2,......,m。
② 从键盘输入整数s(1<=s<=m)和n,从环表的第s个结点开始计数为1,当计数到第n个结点时,输出该第n结点对应的编号,将该结点从环表中消除,从输出结点的下一个结点开始重新计数到n,这样,不断进行计数,不断进行输出,直到输出了这个环表的全部结点为止。
例如,m=10,s=3,n=4。
则输出序列为:6,10,4,9,5,2,1,3,8,7。
三、程序设计1、概要设计应用单向环表寄存数字序列。
⑴单向环表的抽象数据类型线性表的定义如下:ADT LinkList {数据对象:D = { ai | ai ?ElemSet, i=1,...,n,n≥0 }数据关系:R1 = { <ai-1, ai> | ai-1,ai ?D, i=2, ...,n }基本操作:Creat(LinkList &L,int m)操作结果:构造一个有m个结点的单向环表L。
found(LinkList L,int s)初始条件:单向环表L已经存在。
操作结果:找到单向环表L的第s个结点。
ysf(LinkList h,int n) 初始条件:单向环表L已经存在,且本次查找的起始结点h已找到。
操作结果:进行约瑟夫环的计算并输出相应值。
} ADT LinkList⑵主程序流程主程序首先调用Creat(LinkList &L,int m)函数,创建含有m个结点的单向环表L;再调用found(LinkList L,int s)函数查找第s个结点;最后调用ysf(LinkList h,int n)函数,进行约瑟夫环的计算并在屏幕上显示计算结果。
课程名称:数据结构实验项目:线性表姓名:zhangsan专业:网络工程班级:09-1班00000 10000计算机科学与技术学院实验教学中心20 11年 5 月17 日实验项目名称:线性表(学时)一、实验目的了解顺序表的结构特点及有关概念,掌握顺序表建立、插入、删除的基本操作算法。
2.了解单链表的结构特点及有关概念,掌握单链表建立、插入、删除的基本操作算法。
二、实验内容1.顺序表的实践。
1)建立4个元素的顺序表list[]={2,3,4,5},实现顺序表建立的基本操作。
2)在list[]={2,3,4,5}的元素4和5之间插入一个元素9,实现顺序表插入的基本操作。
3)在list[]={2,3,4,9,5}中删除指定位置(i=3)上的元素9,实现顺序表的删除的基本操作。
2.单链表的实践。
1)建立一个包括头结点和3个结点的(4,2,1)的单链表,实现单链表建立的基本操作。
2)在已建好的单链表中的指定位置(x=2)插入一个结点3,实现单链表插入的基本操作。
3)在一个包括头结点和4个结点的(4,2,3,1)的单链表的指定位置删除一个结点,实现单链表删除的基本操作。
三、实验步骤线性表(linear list)是n(n≥0)个数据元素a1,a2,…an组成的有限序列。
其中n 称为数据元素的个数或线性表的长度,当n=0时称为空表,n>0时称为非空表。
通常将非空的线性表记为(a1,a2,…,an),其中的数据元素ai(1≤i ≤n)是一个抽象的符号, ai是第i个数据元素,称i为数据元素ai在线性表中的位置。
其具体含义在不同情况下是不同的,即它的数据类型可以根据具体情况而定,本书中,我们将它的类型设定为elemtype,表示某一种具体的已知数据类型。
顺序表也称为线性表的顺序存储结构。
其存储方式为:在内存中用一组地址连续的存储单元依次存储线性表的数据元素,但该连续存储空间的大小要大于或等于顺序表的长度。
一般让线性表中第一个元素存放在连续存储空间第一个位置,第二个元素紧跟着第一个之后,其余依此类推。
数据结构上机实验报告学院:电子工程学院专业:信息对抗技术姓名:学号:教师:饶鲜日期:目录实验一线性表 ........................................................................................................ - 4 -一、实验目的.................................................................................................... - 4 -二、实验代码.................................................................................................... - 4 -三、实验结果.................................................................................................. - 14 -四、个人思路.................................................................................................. - 15 - 实验二栈和队列 .................................................................................................. - 15 -一、实验目的.................................................................................................. - 15 -二、实验代码.................................................................................................. - 16 -三、实验结果.................................................................................................. - 24 -四、个人思路.................................................................................................. - 25 - 实验三数组 .......................................................................................................... - 26 -一、实验目的.................................................................................................. - 26 -二、实验代码.................................................................................................. - 26 -三、实验结果.................................................................................................. - 28 -四、个人思路.................................................................................................. - 28 - 实验四树 .............................................................................................................. - 29 -一、实验目的.................................................................................................. - 29 -二、实验代码.................................................................................................. - 29 -三、实验结果.................................................................................................. - 39 -四、个人思路.................................................................................................. - 39 -实验一线性表一、实验目的1.熟悉线性表的顺序和链式存储结构2.掌握线性表的基本运算3.能够利用线性表的基本运算完成线性表应用的运算二、实验代码1.设有一个线性表E={e1, e2, … , e n-1, e n},设计一个算法,将线性表逆置,即使元素排列次序颠倒过来,成为逆线性表E’={ e n, e n-1 , … , e2 , e1 },要求逆线性表占用原线性表空间,并且用顺序表和单链表两种方法表示,分别用两个程序来完成。
数据结构上机实验报告数据结构上机实验报告1. 实验目的数据结构是计算机科学中非常重要的一门课程,通过本次上机实验,旨在帮助学生巩固和应用所学的数据结构知识,培养学生分析和解决实际问题的能力。
2. 实验背景本次实验涉及到两个常用的数据结构:栈和队列。
栈是一种后进先出(Last In First Out,LIFO)的数据结构,而队列是一种先进先出(First In First Out,FIFO)的数据结构。
通过实验,我们将学习如何使用这两种数据结构来解决实际问题。
3. 实验内容本次实验分为两个部分:栈的应用和队列的应用。
3.1 栈的应用在栈的应用部分,我们将实现一个简单的括号匹配算法。
该算法可以判断一个字符串中的括号是否匹配。
具体实现步骤如下:3.1.1 创建一个栈来存储括号字符;3.1.2 遍历字符串中的每个字符;3.1.3 如果遇到左括号,则将其入栈;3.1.4 如果遇到右括号,则判断栈顶元素是否是对应的左括号;3.1.5 如果栈为空或栈顶元素不是对应的左括号,则括号不匹配;3.1.6 如果栈顶元素是对应的左括号,则将其出栈;3.1.7 遍历完字符串后,如果栈为空,则括号匹配,否则括号不匹配。
通过实现这个算法,我们可以学习到如何使用栈来解决实际问题,并且理解栈的后进先出的特性。
3.2 队列的应用在队列的应用部分,我们将实现一个简单的任务调度算法。
该算法可以模拟多个任务按照一定的优先级进行调度的过程。
具体实现步骤如下:3.2.1 创建一个队列来存储任务;3.2.2 每个任务包含两个属性:任务名称和优先级;3.2.3 向队列中添加任务,并按照优先级进行排序;3.2.4 从队列中取出优先级最高的任务,并执行;3.2.5 执行完任务后,继续从队列中取出下一个优先级最高的任务,并执行,直到队列为空。
通过实现这个算法,我们可以学习到如何使用队列来实现任务调度,并且理解队列的先进先出的特性。
4. 实验结果与分析通过实验,我们成功实现了括号匹配算法和任务调度算法,并得到了正确的结果。
数据结构实验报告课程数据结构 _ 院系专业班级实验地点姓名学号实验时间指导老师数据结构上机实验报告1一﹑实验名称:实验一——链表二﹑实验目的:1.了解线性表的逻辑结构特性;2.熟悉链表的基本运算在顺序存储结构上的实现,熟练掌握链式存储结构的描述方法;3.掌握链表的基本操作(建表、插入、删除等)4. 掌握循环链表的概念,加深对链表的本质的理解。
5.掌握运用上机调试链表的基本方法三﹑实验内容:(1)创建一个链表(2)在链表中插入元素(3)在链表中删除一个元素(4)销毁链表四﹑实验步骤与程序#include <iostream.h>#include <malloc.h>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<<"请输入一个链表:"<<endl;for(int i=0;i<j;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;p=L->next;if(L->next==NULL){cout<<"链表没有元素!"<<endl;return 0;}cout<<"链表的数据元素为:";while(p){cout<<p->data<<" ";p=p->next;}cout<<endl;return 1;}void LinkListLengh(LinkList &L){//计算链表L的数据元素个数。
北理工数据结构实验报告《数据结构与算法设计》实验报告——实验二学院:自动化学院班级:____学号:__姓名:_____一、实验目的1、熟悉VC 环境,学习使用C 语言实现栈的存储结构。
2、通过编程、上机调试,进一步理解栈的基本概念。
3、锻炼动手编程,独立思考的能力。
二、实验内容实现简单计算器的功能,请按照四则运算加、减、乘、除、幂(^)和括号的优先关系和惯例,编写计算器程序。
要求支持运算符:+、-、*、/、%、()和=:① 从键盘输入一个完整的表达式,以回车作为表达式输入结束的标志;② 输入表达式中的数值均为大于等于零的整数,如果中间计算过程中出现小数也只取整进行计算。
例如,输入:4+2*5= 输出:14输入:(4+2)*(2-10)= 输出:-48三、程序设计1、概要设计为实现上述程序功能,应使用两个栈,分别寄存操作数与运算符。
为此,需要栈的抽象数据结构。
(1)、栈的抽象数据类型定义为:ADT Stack{数据对象:D={|,1,2,,,0}i i a a ElemSet i n n ∈=≥数据关系:R1=11{,|,,2,,}i i i i a a a a D i n --∈=约定n a 端为栈顶,1a 端为栈底。
基本操作:InitStack(&S)操作结果:创建一个空栈S。
GetTop(S,&e)初始条件:栈S已存在且非空。
操作结果:用e返回S的栈顶元素。
Push(&S,e)初始条件:栈S已存在。
操作结果:插入元素e为新的栈顶元素。
Pop(&S,&e)初始条件:栈S已存在且非空。
操作结果:删除S的栈顶元素,并用e返回其值。
In(m,a[])操作结果:若m是运算符,返回TRUE。
Precede(m, n)初始条件:m,n为运算符。
操作结果:若m优先级大于n,返回>,反之亦然。
Operation(a, theta,b)初始条件:a,b为整数,theta为运算符。
数据结构上级实验报告1——采用单向环表实现约瑟夫环
一实验目的
采用单向环表实现约瑟夫环
二实验内容
请按以下要求编程实现:
①从键盘输入整数m,通过create函数生成一个具有m个结点的单向环表。
环表中
的结点编号依次为1,2,……,m。
②从键盘输入整数s(1<=s<=m)和n,从环表的第s个结点开始计数为1,当计数到
第n个结点时,输出该第n结点对应的编号,将该结点从环表中消除,从输出结点的下一个结点开始重新计数到n,这样,不断进行计数,不断进行输出,直到输出了这个环表的全部结点为止。
例如,m=10,s=3,n=4。
则输出序列为:6,10,4,9,5,2,1,3,8,7。
三程序设计
(1)概要设计
抽象数据类型:
struct node
{ int number;
struct node * next;};
宏:无
主函数流程与各函数模块调用关系:
创建头结点=〉输入链表的长度m=〉调用create函数建立链表=〉输入首次定位的节点s 以及间隔数n=〉调用deal函数处理链表=〉结束
函数模块间无彼此调用关系
(2)详细设计
建立链表算法实现:
void create(node * head,int m)
{node * p,*q;
int i = 1;
for(;m>0;m--)
{ p = (node *)malloc(sizeof(node));
if(p == NULL) exit(0);
p->number = m;
p->next = head->next;
head->next = p;
if(i){q = p ; i--;}
}
q->next = head->next;}
处理链表算法实现:
void deal(node * head,int m,int s,int n)
{node * p,*q;
int count=1,tag=0;
p = head;
while(s--){ p = p->next;}
while(tag != m)
{if(count == n){
printf("%d->",p->number);
for(q = p->next; q->next != p; q=q->next);
q->next = p->next;
p = p->next;
q = q->next;
count = 1;
tag++;}
else {p = p->next;count++;}
}
printf("<-end\n");
}
主函数代码实现:
int main()
{ int m,s,n;
node * head, * p;
p = (node *)malloc(sizeof(node));
p->next == NULL;
head = p;
printf("please input number m:\n");
scanf("%d",&m);
create(head,m);
printf("please input number s(1<=s<=m):\n");
scanf("%d",&s);
printf("please input number n:\n");
scanf("%d",&n);
deal(head,m,s,n);
system("pause");
}
四程序调试分析
1在deal函数中进行对p节点的删除操作时出现问题,定位p的前一个节点q时,依旧采用了head指针从头遍历的方法,但是忽略了在函数操作中会删除掉头结点,
这样head指针指向位置改变不能得到正确结果。
所以改用q=p->next从p后节点遍
历的方法能够一直正确的获得p的前一节点的位置。
五用户使用说明
双击exe程序后,软件提示依次输入m,s,n的值;m为链表总长度,为任意正整数;s为第一次定位的节点位置,其值应满足1<=s<=m的正整数;n为间隔的数目,为任意正整数;输入后即可获得结果。
六程序运行结果
七程序清单
#include<stdio.h>
#include<stdlib.h>
struct node//定义链表
{ int number;
struct node * next;
};
void create(node * head,int m)//创建包含m个数字的环形表
{node * p,*q;
int i = 1;
for(;m>0;m--)
{ p = (node *)malloc(sizeof(node));
if(p == NULL) exit(0);
p->number = m;
p->next = head->next;
head->next = p;
if(i){q = p ; i--;}
}
q->next = head->next;//将最后一个节点指向头结点,实现环形表
}
void deal(node * head,int m,int s,int n)//处理链表,完成删除及输出{node * p,*q;
int count=1,tag=0;
p = head;
while(s--){ p = p->next;}//将p指向首次定位的第s个节点
while(tag != m)
{if(count == n){//如果正好数到n值,则进行输出、删除操作并重置计数器printf("%d->",p->number);
for(q = p->next; q->next != p; q=q->next);
q->next = p->next;
p = p->next;
q = q->next;
count = 1;
tag++;}
else {p = p->next;count++;}//如果没有到n值,则继续循环链表 }
printf("<-end\n");
}
int main()
{ int m,s,n;
node * head, * p;
p = (node *)malloc(sizeof(node));
p->next == NULL;
head = p;//定义头结点
printf("please input number m:\n");
scanf("%d",&m);//输入m值——链表长度
create(head,m);//创建该链表
printf("please input number s(1<=s<=m):\n");
scanf("%d",&s);//输入s值——首次定位节点
printf("please input number n:\n");
scanf("%d",&n);//输入n值——间隔数
deal(head,m,s,n);//处理链表,完成输出,删除操作
system("pause");
}。