当前位置:首页 » 操作系统 » 数据结构与算法实验

数据结构与算法实验

发布时间: 2022-05-23 09:00:15

算法与数据结构实验顺序表的应用实验报告

者visual c++都行。
看看这个也许你会明白的更多一些。
实验一 多项式相加

一、实验目的
熟悉链表的使用。
掌握如何使用C语言实现链表的说明、创建以及结点的插入和删除等操作。

二、实验要求
熟悉C语言编程

三、实验内容
对于两个一元多项式中所有指数相同的项,对应系数相加,若其和不为零,则构成“和多项式”的一项;对于两个一元多项式中所有指数不相同的项,则分别复抄到“和多项式”中去。

四、实验步骤
1. 用链表作一元多项式的数据结构,用C语言对链表作说明
2. 生成输入一元多项式的函数
3. 输入一元多项式A(x)和B(x)
4. 以一元多项式A(x)为和多项式,将B(x)多项式中系数加入到A(x)中去

实验二 后缀表达式计算

一、实验目的
熟悉栈的使用。
掌握如何使用C语言实现栈的说明、创建以及进栈和出栈等操作。

二、实验要求
熟悉C语言编程。

三、实验内容
先将中缀表达式(就是我们通常所见的)转换为后缀表达式,比如 a+b*c+d 要变成 abc*+d+;转换的方法用栈来实现,涉及到运算符的优先级;然后用另一个栈来对后缀表达式计算结果

四、实验步骤
1.读入字母/数字--〉字母/数字进栈
2.读入运算符--〉退出两个字母/数字,用运算符计算结果,并将结果进栈
3.栈能刚好退完,则最后的即为结果。否则表明表达式有误

实验三 Kmp算法

一、实验目的
熟悉字符串的使用。
掌握如何kmp算法实验字符串的模式匹配。

二、实验要求
熟悉C语言编程。

三、实验内容
求出子串(模式串)的next,利用kmp算法实验模式与主串的匹配算法。

四、实验步骤
1.生成模式串的next函数
2.从第1个字符开始,进行模式串与主串的比较,
3.如果出现失配,将模式串的第next[j]位置开始,继续与主串进行比较。

实验四 Huffman 编码

一、实验目的
熟悉Huffman编码方法。
了解并弄懂Huffman编码实现信息的无损压缩原理。

二、实验要求
熟悉C语言编程。

三、实验内容
1.根据给定的n个权值(w1, w2, …, wn)构成n棵二叉树的集合F=,其中每棵二叉树Ti中只有一个带树为Ti的根结点
2.在F中选取两棵根结点的权值最小的树作为左右子树构造一棵新的二叉树,且置其根结点的权值为其左右子树权值之和
3.在F中删除这两棵树,同时将新得到的二叉树加入F中
4.重复2, 3,直到F只含一棵树为止

四、实验步骤
1.用C语言实现二叉树的说明
2.输入n个权值,并生成n个二叉树
3.对n个二叉树逐步生成Huffman树
4.对Huffman树的每个叶子结点生成编码

实验五 关键路径

一、实验目的
熟悉关键路径的实现方法。
了解AOE-网以及关键路径在工程实践中的应用。

二、实验要求
熟悉C语言编程。

三、实验内容
根据输入的弧,生成AOE-网。从始点开始,找出到终点的多条路径,求这些路径上的关键活动。由关键活动组成的从始点到终点的路径,即为关键路径。

四、实验步骤
1.输入e条弧,生成AOE-网的存储结构。
2.从始点v0出发,令ve[0]=0,按拓扑有序求ve[j]
3.从终点vn-1出发,令vl[n-1]=ve[n-1],按逆拓扑有序求vl[i]
4.根据各顶点的ve和vl值,求每条弧(活动)ai的最早开始时间e[ai]和最迟开始时间l[ai]
5.如果e[ai]=l[ai],则ai为关键活动

实验六 最短路经

一、实验目的
熟悉最短路径的实现方法。
了解AOE-网以及最短路径在求解实际问题中的应用。

二、实验要求
熟悉C语言编程。

三、实验内容
从始点v0开始,逐步求v0到其它可达的各顶点的最短路径,直到所有顶点计算完成为止。

四、实验步骤
1.输入e条弧,生成AOE-网的存储结构。
2.初始化: S ← ;
dist[j] ← Edge[0][j], j = 1, 2, …, n-1; // n为图中顶点个数
3.求出最短路径的长度:
dist[k] ← min , i  V- S ;
S ← S U ;
4.修改从v0到V-S集合中各顶点的最短路径:
dist[i] ← min,
对于每一个 i 属于 V- S ;
5.判断:若 S = V, 则算法结束,否则转 2。

实验七 二叉排序树

一、实验目的
熟悉二叉排序树的使用。
掌握如何使用C语言实现二叉树的说明、创建以及二叉排序树的生成等操作。

二、实验要求
熟悉C语言编程。

三、实验内容
给定一个记录关键字的值,与二叉排序树的根结点值比较,如果小于根结点的值,则向左子树查找;如果大于根结点的值,则向右子树查找。如果查找到叶子结点leaf,仍没有找到记录,则:如果关键字的值小于leaf的值,则插入该leaf结点的左边,做leaf的左孩子,否则做leaf的右孩子。

四、实验步骤
1.用C语言实现二叉树的说明
2.直接将输入的值作为根结点的值
3.与根结点比较,小于则放到左子树上,大于则放到右子树上。

实验八 希尔排序

一、实验目的
熟悉希尔排序的使用。
掌握如何使用C语言实现若干记录的排序。

二、实验要求
熟悉C语言编程。

三、实验内容
先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。

四、实验步骤
1.输入待排序记录
2.首先取一个整数 gap < n(待排序记录数) 作为间隔, 将全部记录分为 gap 个子序列, 所有距离为 gap 的记录放在同一个子序列中
3.在每一个子序列中分别施行直接插入排序。
4.然后缩小间隔 gap, 例如取 gap = gap/2
5.重复上述的子序列划分和排序工作,直到最后取gap = 1, 将所有记录放在同一个序列中排序为止。

实验九 快速排序

一、实验目的
熟悉快速排序的使用。
掌握如何使用C语言实现若干记录的排序。

二、实验要求
熟悉C语言编程。

三、实验内容
通过一趟将待排记录分割成独立的两个部分,其中一部分记录的关键字均比另一部分记录的关键字小。再对两个部分分别进行快速排序。

四、实验步骤
1.输入待排序的记录,并选择第一个记录作为pivotkey记录
2.从high指向的记录开始,向前找到第一个关键字的值小于Pivotkey的记录,将其放到low指向的位置,low+1
3.从low指向的记录开始,向后找到第一个关键字的值大于Pivotkey的记录,将其放到high指向的位置,high-1
4.重复2,3,直到low=high,将枢轴记录放在low(high)指向的位置
5.重复2,3,4,直到整个记录有序为止

实验十 堆排序

一、实验目的
熟悉堆排序的使用。
掌握如何使用C语言实现若干记录的排序。

二、实验要求
熟悉C语言编程。

三、实验内容
首先将一个无序序列建成一个堆;然后输出堆顶元素;在输出堆顶元素之后,调整剩余的元素成为一个新堆。

四、实验步骤
1.输入记录,按顺序创建一个完全二叉树
2.根据筛选算法,从最后一个结点开始,一直到根结点,逐步筛选,建造初始堆。
3.输出堆顶记录,将最后一个结点放到堆顶,并做筛选,重新建造一个堆
4.直到所有记录输出为止

② 算法与数据结构实验:回文判断

#include<iostream>
using namespace std;
struct queue{
queue *front;
queue *rear;
queue *next;
char data;
};

#define maxsize 100;
#define T 10;

struct sqstack{
char *base;
char *top;
int stacksize;
};

sqstack inistack(sqstack &s){
s.base=new char [10];
if(!s.base) cout<<"error";
s.top=s.base;
s.stacksize=maxsize;
return s;
}

sqstack push(sqstack &s,char e){
if(s.top-s.base>=s.stacksize){
s.base=new char[10];
if(!s.base) cout<<"error";
s.top=s.base+s.stacksize;
s.stacksize+=T;
}
*s.top=e;
s.top++;
return s;
}

sqstack pop(sqstack &s, char e){
if(s.top==s.base)cout<<"error";
e=*s.top;
-- s.top;
return s;
}

queue iniqueue(queue &q){
q.front=q.rear=new queue;
if(!q.front) cout<<"error";
q.front->next=NULL;
return q;
}

queue inqueue(queue &q,char e){
queue *p;
p=new queue;
if(!p) cout<<"error";
p->data=e;
q.rear->next=p;
q.rear=p;
q.rear->next=NULL;
return q;
}

queue dlqueue(queue &q,char e){
queue* p;
p=new queue[10];
if(q.front==q.rear)cout<<"error";
else{
p=q.front->next;
e=p->data;
q.front->next=p->next;
if(q.rear==p)q.rear=q.front;
delete p;
}
return q;
}

char gethead(queue &q){
char e;
if(q.rear==q.front) cout<<"error";
else e=(q.front->next)->data;
return e;
}

char gettop(sqstack &s){
char e;
if(s.top==s.base){
cout<<"error";
}
e=*(s.top-1);
return e;
}

int main(){
int i;
sqstack s;
queue h;

char ch[5] ,x,y;
inistack(s);
iniqueue(h);

for(i=1;i<=5;i++){
cin>>ch[i];
push(s,ch[i]);
inqueue(h,ch[i]);
}

for(int j=1;j<=5;j++){
x=gettop(s);
y=gethead(h);
if(x!=y) cout<<"\tfalse\t"<<endl;
else cout<<"\tequal\t"<<endl;

pop(s,x);
dlqueue(h,y);
}

system("pause");
return 0;
}

③ 数据结构与算法实验

计算机科学系

计算机科学与技术专业 培养具有良好综合素质和开拓创新能力,系统掌握本专业的基本理论、基础知识和基本技能与方法,具有实际应用和科学研究能力的计算机及其相关技术与产业领域的复合型应用技术人才。

主要课程:数学分析、高等代数、数理逻辑、集合论与图论、计算机科学导论、程序设计基础、数字电路与逻辑设计、计算机组成原理、数据结构与算法、操作系统原理、汇编语言程序设计、数据库系统原理、编译原理、软件工程导论、计算机网络、计算机体系结构、并行与分布式计算、计算机图形学、信息安全技术、多媒体技术、Linux原理与应用等。专业课程还将安排相关的实验(实习)、课程设计或社会实践,以加强学生的实践能力与开拓能力。高年级同学还可以选修本学院其它专业的相关课程。

网络工程专业 培养具有实际运用先进的工程化方法和工具从事网络规划、设计、开发和维护等工作,具备工程项目的组织与管理能力的实用型、复合型网络工程技术与管理的高级人才。

主要课程:数学分析、高等代数、数理逻辑、集合论与图论、计算机科学导论、程序设计基础、数字电路与逻辑设计、计算机组成原理、数据结构与算法、计算机网络、操作系统原理、计算机体系结构、计算机接口技术、通信原理、网络系统设计、密码学与网络安全、无线通信与网络、Linux原理与应用等。专业课程还将安排相关的实验(实习)、课程设计或社会实践,以加强学生的实践能力与开拓能力。高年级同学还可以选修本学院其它专业的相关课程。

信息安全专业 培养具有扎实的数理基础,较好的外语和计算机技术运用能力,掌握信息安全的基本理论与技术、计算机与网络通信及其安全技术以及信息安全法律法规等方面的知识,能运用所学知识与技能去分析和解决相关的实际问题,具有较高的综合业务素质、较强的创新与实践能力,可以在政府、国防、金融、公安和商业等部门从事信息安全产品研发、信息系统安全分析与设计、信息安全技术咨询与评估服务、信息安全教育、信息安全管理与执法等工作的高级专业人才。

主要课程:数学分析、数理逻辑、集合论与图论、信息安全数学基础、计算机组成原理、程序设计基础、数据结构与算法、数据库系统原理、软件工程导论、计算机接口技术、计算机网络、通信原理、信息论基础、操作系统安全、Linux原理与应用、网络协议与验证、移动计算、计算机密码学、网络安全技术、计算机病毒、信息隐藏技术、电子商务技术、信息安全法律法规等。专业课程还将安排相关的实验(实习)、课程设计或社会实践,以加强学生的实践能力与开拓能力。高年级同学还可以选修本学院其它专业的相关课程。

上述专业的毕业生适合在计算件软硬件企业、网络公司、电信企业、金融、交通、银行等各类企事业单位就职,从事计算机技术管理、计算机控制、软件和信息安全产品的生产、开发、应用和维护工作,也可在政府管理部门、金融和经济管理部门从事计算机应用、网络信息管理和维护工作,还可在高等学校和研究部门从事教学、科研工作。

电子与通信工程系

电子信息科学与技术专业 培养基础扎实、知识面较宽、素质高、能力强,有一定创新能力、科学研究能力和解决实际问题的能力,适应21世纪社会和经济发展的需要,能从事电子信息科学与技术领域的科学研究、教学与应用技术等工作的复合型人才。

毕业生具有坚实的数理基础,掌握电子学与信息系统的基本理论和方法。熟悉电路与系统、电磁场与电磁波理论、微波与射频技术、计算机网络以及通信和计算机应用等技术。具有较高的实验能力和一定的分析和解决实际问题的能力;了解电子学与信息系统的新发展并具有一定的科学研究、应用研究、技术开发及教学等方面的能力。较为熟练地使用一种外国语阅读专业书刊及外文资料。

学生毕业后适合在通讯、银行、企业、机关等部门,从事电子技术和计算机技术管理、生产方面的开发应用,以及在高等学校和研究部门从事教学、科研工作。

主要课程:高等数学、概率论与数理统计、大学物理及实验、高级程序设计、电路基础理论、模拟电子技术及实验、数字电路与逻辑设计及实验、微型计算机原理及实验、高频电路、信号与系统、电磁场与电磁波、集成电路设计、信息论、微波技术与实验、数字信号处理、计算机通信与网络、通信原理、EDA原理及应用、单片机原理及应用、数据结构与算法、现代通信技术、数据库系统原理等,学生还可选修学校及学院其他专业的相关课程。

自动化专业 自动化是以电子技术、计算机技术、检测技术、通信技术和控制理论为基础,研究自动控制系统的组成结构、控制规律及其应用的学科。该专业培养德、智、体全面发展,注重德、智、体、美、劳,具有健全的心理素质和健康的体格。基础扎实、知识面宽、综合素质高、实践能力强,适应适应21世纪社会和经济发展的需要,能从事自动化和计算机网络控制工程领域的先进技术研究、设计、应用开发及教学等方面的高级复合型人才。

毕业生应具有控制科学与工程学科扎实的基础理论、基本技能和方法;具有对电子电气电路、控制系统进行分析、设计和研究开发的能力;掌握信号自动检测、数据处理的基础知识与技能;掌握计算机与网络控制技术;有严谨的科学作风和创新能力;具有独立进行科学研究、应用研究、分析和解决实际问题的能力。

学生毕业后适合在各类企业、国家政府部门、事业、通信、银行、军事等部门从事电子技术、计算机技术、通信技术及生产过程自动化方面的应用研究、产品开发及行政管理工作,以及在高等学校和研究等部门从事教学、科研及管理工作。

主要课程:高等数学、概率论与数理统计、工程数学、数值计算、高级程序设计、大学物理及实验、电路基础理论及实验、模拟电子技术及实验、数字电路与逻辑设计及实验、电力电子技术、电机及拖动基础、微型计算机原理及实验、自动控制原理及实验、信号与系统、现代控制理论、计算机控制技术及实验、计算机通信与网络、数字信号处理、电气与可编程控制器、过程控制工程、单片机原理及应用、自动测量技术、电力拖动自动控制系统、虚拟仪器技术、数据结构、操作系统、数据库系统原理、科技信息检索等,学生还可选修学校及学院其他专业的相关课程。

通信工程专业 培养基础扎实、知识面较宽、综合素质高、实践能力强,适应21世纪社会和经济发展的需要,系统掌握电路分析与信号处理理论、通信原理、网络理论、电磁场理论、传输原理、现代电信交换等专业基础理论;掌握各类通信网、通信系统及其主要设备的构成原理、技术性能、设计、调试、运行维护和管理的基本知识;对国内外通信工程及相关学科的现状和发展趋势有一定的了解;有严谨的科学作风和创新能力;具有独立对一般的通信系统和网络进行分析、设计和研究开发的能力。能从事现代通信工程和电信网络先进技术研究、设计、开发及教学等方面的高级复合型人才。

学生毕业后适合在电信企业、邮电管理部门、银行、交通等部门从事通信、电子技术和计算机应用等方面的管理和技术开发工作,也可以在高等学校和研究部门从事教学和科研工作。

主要课程:高等数学、概率论与数理统计、高级程序设计、大学物理及实验、电路基础理论、模拟电子技术及实验、数字电路与逻辑设计及实验、微型计算机原理及实验、高频电路、信号与系统、电磁场与电磁波、微波技术实验、通信原理、计算机网络、数字信号处理、信息论、操作系统、数据库系统原理、数字通信系统及实验、无线通信原理、现代电信交换、光纤通信、数字图象处理、数据结构、单片机原理及应用、计算机视觉等。学生还可选修该学院其他专业的相关课程。

谢谢

④ 数据结构与算法实验题 条形图轮廓问题

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LBound (-3000)
#define UBound 3000
#define Cod2Idx(x) ((x)-LBound)
#define Size Cod2Idx(UBound+1)
int main() {
int hs[Size], n;
int i, l, r, h, i0, i1;
memset(hs, 0, sizeof(*hs) * Size);
scanf("%d", &n);
for (i0=UBound, i1=LBound; n>0; n--) {
scanf("%d %d %d", &l, &h, &r);
if (l < i0) i0 = l;
if (r > i1) i1 = r;
for (i=l; i<r; i++)
if (hs[Cod2Idx(i)] < h)
hs[Cod2Idx(i)] = h;
}
for (i=i0, h=0; i<i1; i++)
if (hs[Cod2Idx(i)] != h)
printf("%d %d ", i, h=hs[Cod2Idx(i)]);
printf("%d %d\n", i, 0);
return 0;
}

⑤ 数据结构与算法实验代码

#include <cstdio>

int gold[225],medal[225],population[225];
int list[10];
int fir = 0;//用来判断是否是第一个元素用的
void printresult(int check_number,int n);
int main()
{
int n,m;

scanf("%d%d",&n,&m);
for(int i = 0;i < n;i++)
scanf("%d%d%d",&gold[i],&medal[i],&population[i]);
for(int i = 0;i < m;i++)
{
int check_number;
scanf("%d",&check_number);
printresult(check_number,n);
}
printf("\n");
return 0;
}
void printresult(int check_number,int n)
{
for(int i = 0;i < n;i++)
{
if(gold[i]>gold[check_number])
list[1]++;
}
int result = ++list[1];//这里还要多加一个1,因为数组原来是0
int num = 1;
for(int i = 0;i < n;i++)
{
if(medal[i]>medal[check_number])
list[2]++;
}
list[2]++;
double gold_per = gold[check_number]*1.0/population[check_number];
for(int i = 0;i < n;i++)
{
if((gold[i]*1.0/population[i])>gold_per)
list[3]++;
}
list[3]++;
double medal_per = medal[check_number]*1.0/population[check_number];
for(int i = 0;i < n;i++)
{
if(medal[i]*1.0/population[i]>medal_per)
list[4]++;
}
list[4]++;
for(int i = 1;i < 5;i++)
{
if(list[i]<result)
{
result = list[i];
num = i;
}
}
for(int i = 1;i < 5;i++)
list[i] = 0;//对排名数组清零,因为之后要多次调用
if(!fir)
{
printf("%d:%d",result,num);//首个输入前面不用空格
fir = 1;
}
else
printf(" %d:%d",result,num);
}
//如果超时的话还可以再优化,不过国家的数量比较少,应该不会
//优化就是把排名是1的话直接输出,不进行之后运算

⑥ 数据结构与算法实验与C++语言实验哪个更难

1、如果单纯从研究的角度来说,数据结构和算法更加难。
2、但是如果你的C++实验中就是设计一个算法的话(以前没有出现的),从这种意义来说数据结构和算法是C++实验的一部分。
3、综合来说,其实并没有谁难谁易,主要是学习或者研究的角度不同会有差异。

⑦ 数据结构与算法的实验内容

第一题用python写的,第二题用c++写的。

在http://pat.zju.e.cn测试通过

#第一题
defmain():
text=raw_input()
n=int(text[0:text.find('')])
m=int(text[text.find('')+1:])

root=build(n)
check(root,m)

defbuild(n):
raw_name=raw_input()
name=raw_name.strip()
root={}
root['name']=name
root['layer']=0
root['child']={}
root['sibling']={}

pre_node=root
foriinrange(1,n):
raw_name=raw_input()
name=raw_name.strip()
cur_layer=raw_name.index(name)/2
cur_node={}
cur_node['name']=name
cur_node['layer']=cur_layer
cur_node['child']={}
cur_node['sibling']={}
ifcur_layer==pre_node['layer']:
pre_node['sibling']=cur_node
elifcur_layer==pre_node['layer']+1:
pre_node['child']=cur_node
elifcur_layer==pre_node['layer']+1:
print'error! '
break
elifcur_layer<pre_node['layer']:
path=getpath(root,pre_node['name'])
pre_subling={}
forpinpath:
ifp['layer']>cur_layer:
break
else:
pre_subling=p
pre_subling['sibling']=cur_node
pre_node=cur_node

returnroot

defcheck(root,m):
#XisachildofY
#XistheparentofY
#XisasiblingofY
#XisadescendantofY
#XisanancestorofY
foriinrange(0,m):
text=raw_input()
X=text[0:text.find('')]
Y=text[text.rfind('')+1:]
if'child'intext:
path=getpath(root,X)
iflen(path)>=2andpath[-2]['name']==Y:
printTrue
else:
printFalse
if'parent'intext:
path=getpath(root,Y)
iflen(path)>=2andpath[-2]['name']==X:
printTrue
else:
printFalse
if'sibling'intext:
pathX=getpath(root,X)
pathY=getpath(root,Y)
iflen(pathX)>=2andlen(pathY)>=2andpathX[-2]['name']==pathY[-2]['name']:
printTrue
else:
printFalse
if'descendant'intext:
path=getpath(root,X)
forpinpath:
ifp['name']==Y:
break
ifp['name']==Y:
printTrue
else:
printFalse
if'ancestor'intext:
path=getpath(root,Y)
forpinpath:
ifp['name']==X:
break
ifp['name']==X:
printTrue
else:
printFalse

defgetpath(root,node_name):
path=[root]
next_node=root['child']
whileTrue:
whilenext_node!={}:
path.append(next_node)
ifnext_node['name']==node_name:
returnpath
next_node=next_node['child']

next_node=path.pop()
ifpath==[]:
returnpath
else:
next_node=next_node['sibling']

if__name__=="__main__":
main()
//第二题
#include<iostream>
#include<algorithm>

usingnamespacestd;

constintMAX=224;
typedefstruct
{
intindex;
doubleno;
intrange;
}ELEM;
intcmp_des(constELEM&a,constELEM&b){
returna.no>b.no;//降序
}
intcmp_aes(constELEM&a,constELEM&b){
returna.index<b.index;//升序
}
intmain()
{
intn,m;
cin>>n>>m;

doubledata[5][MAX];
intpaiming[5][MAX];
ELEMtmp[MAX];
intcountry[MAX];
inti,j;
for(i=0;i<n;i++)
{
cin>>data[1][i]>>data[2][i]>>data[0][i];
data[3][i]=data[1][i]/data[0][i];
data[4][i]=data[2][i]/data[0][i];
}
for(i=0;i<m;i++)
cin>>country[i];

for(i=1;i<=4;i++)
{
for(j=0;j<n;j++)
{
tmp[j].index=j;
tmp[j].no=data[i][j];
}
sort(tmp,tmp+n,cmp_des);
for(j=0;j<n;j++)
{
if(j>0&&tmp[j].no==tmp[j-1].no)
tmp[j].range=tmp[j-1].range;
else
tmp[j].range=j+1;
}
sort(tmp,tmp+n,cmp_aes);
for(j=0;j<n;j++)
{
paiming[i][j]=tmp[j].range;
}
}

inttop_12,top_34,top_1234;
for(i=0;i<m;i++)
{
top_12=paiming[1][country[i]]<=paiming[2][country[i]]?1:2;
top_34=paiming[3][country[i]]<=paiming[4][country[i]]?3:4;
top_1234=paiming[top_12][country[i]]<=paiming[top_34][country[i]]?top_12:top_34;
printf("%d:%d",(int)paiming[top_1234][country[i]],(int)top_1234);
if(i<m-1)
printf("");
}

return0;
}

⑧ 数据结构与算法实验题 2.3有序链表 ★实验任务 有n(1<=n<=1000)个整数,a1,a2,…an已经按照从小到大顺序排

#include<iostream>
using namespace std;
void main()
{
int a[2000];
int b[1000];
int n,m;
cout<<"输入两个整数n和m:"<<endl;
cin>>n>>m;
int i,j;
for(i=0;i<=n;i++)
{
cin>>a[i];
}
for(j=0;j<=m;j++)
{
cin>>b[j];
for(i=0;i<=2000;i++)
{
n++;
a[n]=b[j];

for(;0<=n;n--)
{
if(a[n-1]>a[n])
{

int k=0;
k=a[n-1];
a[n-1]=a[n];
a[n]=k;
}

}

}
}
cout<<"重新排序后的序列为:"<<a<<endl;
}

⑨ 数据结构与算法实验,c++的

public static void Around<T, TResult>(AspectAdvice advice, Func<T, TResult> fun, T t, out TResult result)
{
advice.Before(fun.Target, fun.Method, t);
result = fun(t);
advice.After(fun.Target, fun.Method, t);
}

⑩ 数据结构与算法实验题作业

#include<stdio.h>
void fun(long *data,long num, long *anum, long *bnum)
{
if (num<1)
{
*anum = 0;
*bnum = 0;
return;
}
if (num == 1)
{
*anum = 0;
*bnum = 1;
return;
}
if (num == 2)
{
*anum = 1;
*bnum = 1;
return;
}
long tempa,tempb;
long a,b;
tempb = 0;
a = -1;
b = num;
tempa = 0;

while (a<b)
{
if (tempa<tempb)
{
tempa += data[a+1];
++a;
continue;
}
if (tempb < tempa)
{
tempb += data[b-1];
--b;
continue;
}
if (tempa == tempb)
{
if (b-a == 1)
{
--b;
break;
}
if (b-a==2)
{
--b;
break;
}
tempa += data[a+1];
tempb += data[b-1];
++a;
--b;
if (b-a ==1)
{
break;
}
}
}

*anum = b;
*bnum = num - b;
}
int main()
{
long num;

scanf("%d",&num);
if (num<1)
{
return 0;
}

long *pData;
pData = new long[num];
long i;
for (i=0; i<num; ++i)
{
scanf("%d",&pData[i]);
}

long anum,bnum;

fun(pData,num,&anum,&bnum);

printf("%ld %ld\n",anum,bnum);

delete []pData;

return 0;
}

热点内容
获取了ip怎么进他的服务器 发布:2024-10-26 17:17:17 浏览:491
存储的反应 发布:2024-10-26 17:08:39 浏览:442
sql三张表查询 发布:2024-10-26 17:05:23 浏览:344
怎么看电脑wifi密码是多少 发布:2024-10-26 17:00:10 浏览:325
上传gif不会动 发布:2024-10-26 16:59:55 浏览:13
volte手机如何解锁密码 发布:2024-10-26 16:54:04 浏览:105
如何将安卓手机刷为蜂巢系统 发布:2024-10-26 16:43:44 浏览:831
androidnetcfg 发布:2024-10-26 16:42:40 浏览:929
imageloaderandroid 发布:2024-10-26 16:41:14 浏览:778
21H的源码 发布:2024-10-26 16:35:47 浏览:722