当前位置:文档之家› 西电 数据结构第一次上机作业

西电 数据结构第一次上机作业

西电 数据结构第一次上机作业
西电 数据结构第一次上机作业

第一次上机作业

——纸牌游戏程序(斗地主)

班级:

学号:

姓名:

上机时间:2013-10-9

一.实验目的

熟悉线性表的基本操作

二.实验方法

该程序主要是利用全局变量来统筹整个程序。总共有三个子函数,分别为洗牌子函数,排序子函数,发牌子函数。洗牌这个子函数利用了随机数的生成,而主函数通过指针变量把生成的随机数赋值给全局变量。

三.实验结果

由运行出来的结果可以看出,此洗牌发牌符合斗地主的规则,是合法的。随机发的牌没有重复,没有遗漏,且按照斗地主的牌的大小进行排列,即从小到大分别为:3,4,5,6,7,8,9,10,J,Q,K,A,2,小鬼,大鬼。所以此程序是正确的,成功的。

四.算法描述

本程序除了运用一些条件语句,判断语句之外,主要运用了两个算法,一个是随机数的生成,一个是冒泡排序法。

随机数的生成的复杂度为O(N),其中N=54,这是在运行结果最佳的状况下才会出现的,一旦生成的随机数相同的话,通过if语句会重新生成随机数,直到生成不同的随机数。

冒泡排序法的空间复杂度为O(1),时间复杂度为O(N2),本程序中的N为54,而且运行了两次冒泡排序法,分别为牌数和花色进行排序,所以空间复杂度为2×O(1),时间复杂度为2×O(542)。

五.变量说明

a[17],b[17],c[17],d[3]为全局变量的数组,分别存放玩家07121027(1),07121027(2),07121027(3)的牌,以及三个底牌。

六.程序执行结果

1.第一次运行结果:

07121027(1)的牌是:

梅花3 红桃3 方块4 黑桃4 方块5 红桃5 黑桃5 方块7 红桃7

黑桃7 红桃10 方块J 梅花Q 梅花K 黑桃K 方块2 黑桃2

07121027(2)的牌是:

方块3 梅花4 红桃4 方块6 黑桃6 梅花8 红桃9 黑桃9 方块10

黑桃10 红桃J 黑桃J 方块K 方块A 黑桃A 红桃2 小鬼

07121027(3)的牌是:

黑桃3 梅花6 红桃6 梅花7 方块8 黑桃8 梅花9 梅花10 梅花J

方块Q 红桃Q 黑桃Q 红桃K 梅花A 红桃A 梅花2 大鬼

底牌是:

梅花5 红桃8 方块9

2.第二次运行结果:

07121027(1)的牌是:

红桃3 方块4 梅花5 红桃5 方块6 梅花6 方块7 红桃7 红桃10 梅花J 红桃J 黑桃J 梅花Q 红桃K 方块A 红桃A 梅花2

07121027(2)的牌是:

方块3 红桃4 黑桃4 黑桃6 梅花7 红桃8 方块9 梅花9 红桃9 黑桃9 方块10 梅花10 方块J 红桃Q 黑桃A 红桃2 大鬼

07121027(3)的牌是:

黑桃3 梅花4 方块5 黑桃5 红桃6 黑桃7 方块8 梅花8 黑桃10 方块Q 黑桃Q 方块K 梅花K 黑桃K 梅花A 方块2 黑桃2

底牌是:

梅花3 黑桃8 小鬼

3.第三次运行结果:

07121027(1)的牌是:

梅花3 红桃3 黑桃4 红桃5 梅花6 梅花7 红桃7 黑桃7 梅花8 红桃8 红桃10 方块J 黑桃J 梅花K 梅花A 梅花2 大鬼

07121027(2)的牌是:

方块3 方块4 方块5 梅花5 黑桃5 黑桃6 方块7 方块8 方块9 黑桃10 红桃J 方块Q 红桃Q 黑桃Q 方块A 红桃A 方块2

07121027(3)的牌是:

黑桃3 梅花4 方块6 红桃6 黑桃8 梅花9 黑桃9 方块10 梅花J 梅花Q 方块K 红桃K 黑桃K 黑桃A 红桃2 黑桃2 小鬼

底牌是:

红桃4 红桃9 梅花10

七.附录

#include

#include

#include

void Xipai();

void Paixu();

void Fapai();

int a[17],b[17],c[17],d[3];

int *p ,q;

void Xipai()

{

int m[54],n[54],r[54],i,j=0,k;

srand((unsigned)time(NULL));

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

m[i]=i+1;

for(i=0;i<54;)

{

k=rand()%54;

if(m[k]!=0)

{

n[i]=m[k];

r[j++]=n[i];

m[k]=0;

++i;

}

}

p=&r[0];

}

void Paixu(int t[])

{

int pai[17],i,j=0,s,p;

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

if(t[i]==0) break;

for(i=0;i<17&&t[i]!=0;i++)

{

if(t[i]<14) pai[i]=t[i];

else if(t[i]<27) pai[i]=t[i]-13;

else if(t[i]<40) pai[i]=t[i]-26;

else if(t[i]<53) pai[i]=t[i]-39;

if(t[i]==53) pai[i]=16;

if(t[i]==54) pai[i]=17;

if(pai[i]==1) pai[i]=14;

if(pai[i]==2) pai[i]=15;

}

for(i=0;i<16&&t[i]!=0;i++)

for(j=i+1;j<17&&t[j]!=0;j++)

{

if(pai[i]>pai[j])

{

p=pai[i];pai[i]=pai[j];pai[j]=p;

s=t[i];t[i]=t[j];t[j]=s;

}

if(pai[i]==pai[j]&&t[i]>t[j])

{

p=pai[i];pai[i]=pai[j];pai[j]=p;

s=t[i];t[i]=t[j];t[j]=s;

}

}

}

void Fapai(int t[])

{

int i;

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

if(t[i]==0) break;

for(i=0;i<17&&t[i]!=0;i++)

switch((t[i]-1)/13)

{

case 0:{printf("方块");

if(t[i]==1) printf("A\t");

else if(t[i]==11) printf("J\t");

else if(t[i]==12) printf("Q\t");

else if(t[i]==13) printf("K\t");

else printf("%d\t",t[i]);break;}

case 1:{printf("梅花");

if(t[i]-13==1) printf("A\t");

else if(t[i]-13==11) printf("J\t");

else if(t[i]-13==12) printf("Q\t");

else if(t[i]-13==13) printf("K\t");

else printf("%d\t",t[i]-13);break;} case 2:{printf("红桃");

if(t[i]-26==1) printf("A\t");

else if(t[i]-26==11) printf("J\t");

else if(t[i]-26==12) printf("Q\t");

else if(t[i]-26==13) printf("K\t");

else printf("%d\t",t[i]-26);break;} case 3:{printf("黑桃");

if(t[i]-39==1) printf("A\t");

else if(t[i]-39==11) printf("J\t");

else if(t[i]-39==12) printf("Q\t");

else if(t[i]-39==13) printf("K\t");

else printf("%d\t",t[i]-39);break;}

case 4:{if(t[i]%13==1) printf("小鬼\t");else printf("大鬼\t");break;}

}

}

void main()

{

int i;

p=&q;

Xipai();

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

{

if(i<17) a[i]=*(p++);

else if(i<34) b[i-17]=*(p++);

else if(i<51) c[i-34]=*(p++);

else d[i-51]=*(p++);

}

printf("07121027(1)的牌是:\n");

Paixu(a);

Fapai(a);

printf("\n\n07121027(2)的牌是:\n");

Paixu(b);

Fapai(b);

printf("\n\n07121027(3)的牌是:\n");

Paixu(c);

Fapai(c);

printf("\n\n底牌是:\n");

Paixu(d);

Fapai(d);

}

数据结构大作业报告

数据结构大作业报告 数据结构大作业实验报告课程名称:数据结构设计题目:客户去银行储蓄模拟程序一( 实验题目 (1)内容描述:编写一个程序反映客户到银行储蓄的过程。 (2)基本要求:要实现以下功能:1:排队 2:储蓄 3:查看排队4.:删除自己所排的队 5.不再排队,剩下的客户依次储蓄 6:下班 二( 实验的工程组成图和程序结构图 main bank 本工程的组成结构如左图所示,程序结构图如右图所示。三( 工程所包含的函数的功能描述 Bank():模拟客户到银行去储蓄的过程。客户排队储蓄,所以要用到一个队列, 这里设计了一个不带头结点的单链表作为队列。 四( 实验工程的算法描述及流程图 //客户排队去银行储蓄,用到了队列的知识,这里设计了一个不带头结点的单链表作为队列来完成排队储蓄过程 #include

#include typedef struct qnode { int data; struct qnode *next; } QNode; //定义链队结点类型 typedef struct { QNode *front,*rear; } QType; //定义链队类型 void bank() //模拟客户储蓄的过程 { int cho,onwork=1,no,find; QType *q; //定义链队类型的指针 QNode *p,*r; //定义链队结点的指针 q=(QType *)malloc(sizeof(QType)); //申请链队的空间 q->front=q->rear=NULL; //创建空队 while (onwork==1) //循环执行 { printf("1:排队 2:储蓄 3:查看排队4:删除自己所排的队 5:不再排队,剩下的客户依次储蓄 6:下班请选择:"); scanf("%d",&cho); switch(cho) { case 1://排队

西电数据挖掘大作业k-means和k-medoids

题 目: 数据挖掘 学 院: 电子工程学院 专 业: 智能科学和技术 学生姓名: ** 学 号: 02115*** k -means 实验报告 一、 waveform 数据 1、 算法描述 1. 从数据集{X n }n?1N 中任意选取k 个赋给初始的聚类中心c 1, c 2, …,

c k; 2.对数据集中的每个样本点x i,计算其和各个聚类中心c j的欧氏 距离并获取其类别标号: label(i)=arg min ||x i?c j||2,i=1,…,N,j=1,…,k 3.按下式重新计算k个聚类中心; c j=∑x j s:label(s)=j j ,j=1,2,…k 重复步骤2和步骤3,直到达到最大迭代次数为止2、实验结果 二、图像处理 1、算法描述 同上; 2、实验结果

代码: k_means: %%%%%%%%%K_means%%%%%%%% %%%%%%%%%函数说明%%%%%%%% %输入: % sample——样本集; % k ——聚类数目; %输出: % y ——类标(从0开始) % cnew ——聚类中心 % n ——迭代次数 function [y cnew n]=k_means(sample,k) [N V]=size(sample); %N为样本的个数 K为样本的维数 y=zeros(N,1); %记录样本类标 dist=zeros(1,k); rand_num=randperm(N); cnew=(sample(rand_num(1,1:k),:));%随机初始化聚类中心cold=zeros(k,V); n=0;

西电《软件技术基础》上机大作业答案解析

说明 每个实验题目含有一个main函数和一些函数,与实验题目相关的基本运算的函数定义和main函数定义的代码在附录以及对应的文件夹中给出,供上机实验参考使用。对于每个题目,只需要根据题目要求设计算法,补充函数定义,然后对程序进行编译、调试。

实验一线性表 一、实验目的 1.熟悉线性表的顺序和链式存储结构 2.掌握线性表的基本运算 3.能够利用线性表的基本运算完成线性表应用的运算 二、实验内容 1.设有一个线性表E={e1, e2, … , e n-1, e n},设计一个算法,将线性表逆置,即使元素排列次序颠倒过来,成为逆线性表E’={ e n , e n-1 , … , e2 , e1 },要求逆线性表占用原线性表空间,并且用顺序表和单链表两种方法表示,分别用两个程序来完成。(文件夹:顺序表逆置、单链表逆置) 2.已知由不具有头结点的单链表表示的线性表中,含有三类字符的数据元素(字母、数字和其他字符),试编写算法构造三个以循环链表表示的线性表,使每个表中只含有同一类的字符,且利用原表中的结点空间,头结点可另辟空间。(文件夹:分解单链表) 实验二栈和队列 一、实验目的 1.熟悉栈和队列的顺序和链式存储结构 2.掌握栈和队列的基本运算 3.能够利用栈和队列的基本运算完成栈和队列应用的运算 二、实验内容 1.设单链表中存放有n个字符,试编写算法,判断该字符串是否有中心对称的关系,例如xyzzyx是中心对称的字符串。(提示:将单链表中的一半字符先依次进栈,然后依次出栈与单链表中的另一半字符进行比较。)(文件夹:判字符串中心对称) 2.假设以数组sequ[m]存放循环队列的元素,同时设变量rear和quelen 分别指示循环队列中队尾元素的位置和内含元素的个数。编写实现该循环队列的入队和出队操作的算法。 提示:队空的条件:sq->quelen==0;队满的条件:sq->quelen==m。(文件夹:循环队列)实验三串 一、实验目的 1.熟悉串的顺序存储结构 2.掌握串的基本运算及应用 二、实验内容 1.串采用顺序存储结构,编写朴素模式匹配算法,查找在串中是否存在给定的子串。(文件夹:模式匹配) 2.若S是一个采用顺序结构存储的串,利用C的库函数strlen和strcpy(或strncpy)编写

数据结构大作业-纸牌游戏

数据结构课程设计大作业 题目纸牌游戏 专业计算机科学与技术 学生姓名 __________________ 学号 _____________________ 指导教师 __________________ 完成日期 __________________ 信息与工程学院

目录 一、实验内容概述(设计任务与技术要求) (1) 二、实验目的概述(总体设计方案) (1) 三、解题思路的描述(数据结构和算法的设计): (1) 四、源程序清单(源程序中应该附有必要的注释) (2) 五、程序调试及测试结果 (4) 六、结论 (4) 七、参考文献 (5)

【内容摘要】 编号为1~52的牌,正面向上,从第二张开始,以2为基数,是2的倍数的牌翻一次,直到最 后一张牌;然后,从第三张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后从 第四张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;依次类推,知道所有以52 为基数的牌翻过一次。输出:这时正面向上的牌有哪些? 【关键字】 52张纸牌,倍数,基数,数组 【Abstract 】 Numbered 1 to 52 cards, face up, starting from the second to 2 as the base, is a multiple of 2 cards turning on ce, un til the last card; and the n, begi nning from the third to 3 as the base,is a multiple of 3 cards turning once, un til the last card; and the n start from the fourth to 4 as the base, is a multiple of 4 cards turning once, un til the last card; and so on, that was all of 52base of the card turned over on ce.Output: At this time what the cards face up? 【Key words 】 52 cards, multiple, base, array

SQL数据库期末大作业

学校:北京联合大学 系别:信息管理系 姓名:孙超 学号:2013110444006 《餐饮业信息管理系统的开发》 1、本项目的需求分析 随着今年来中国餐饮行业的日益火爆,在强烈的行业竞争中,一个高效的餐饮信息管理系统的应用,无疑是至关重要的。高效,便捷的管理系统,不仅仅极大的方便了食客的就餐,同时对于餐饮公司的各项信息管理有着很大的帮助,同时,我们的餐饮信息管理系统还能帮助餐厅降低错误率,扩大营业范围,增加知名度等。 为了使得系统在操作的过程中,更加便捷,具有针对性,本次系统设计主要分为:员工登陆操作信息系统,以及店主操作管理信息系统。不同的设计从而达到不同的功能,实现信息的有效传达与管理。 第一:在员工使用本餐饮信息管理系统应可以实现以下功能: 1.添加修改查询客户会员信息(修改客户信息需客户确认) 2.查询菜单 3.添加查询预定信息,为老顾客打折 4.客户可以在自己的会员账户里充值 5.顾客可以用现金买单也可以从会员账户里扣取 第二:管理员使用本餐饮信息管理系统应可以实现以下功能: 1.添加修改查询客户会员信息(修改客户信息需客户确认) 2.添加修改查询菜单信息,最好能看到菜品图片 3.添加查询预定信息,为老顾客打折 4.客户可以在自己的会员账户里充值 5.顾客可以用现金买单也可以从会员账户里扣取 6.设定具体的打折方法 7.添加职员信息,权限也可以定为管理员。 8.可以查询使用者的现金收款金额。 二、餐饮业管理数据库管理系统的E-R模型(概念结构设计) 1.用户(员工)的信息:

编号、密码、类型、姓名、电话、收款金额 2.客户信息: 用户编号、客户编号、姓名、电话、密码、开卡时间、卡内余额 3.食谱: 类型、名称、价格、配料、照片 4.预定: 用户编号、日期、预定时间、客户姓名、类型、预定食谱、桌号5桌台管理: 桌号、使用情况、 6.点餐管理: 用户编号、类型、菜品、数量、价格、照片 7.盈利管理: 日期、日支出金额、店内收入、外卖收入、盈利额度 各对象之间的联系图: 用户E-R图 主要存储一些用户信息,如用户的账号、密码和类型地点等等,主要用于用户登录,添加客户和添加预定时会使用到用户信息。

西电数据结构大作业

题目:数据结构上机报告学院:电子工程学院 专业:信息对抗技术 学生姓名:甘佳霖 学号:14020310092

西安电子科技大学 数据结构课程实验报告实验名称线性表 电子工程学院 1402031 班Array姓名甘佳霖学号 14020310092 同作者 实验日期 2017 年 3 月 18 日

实验一线性表 一、实验目的 1.熟悉线性表的顺序和链式存储结构 2.掌握线性表的基本运算 3.能够利用线性表的基本运算完成线性表应用的运算 二、实验要求 1.设有一个线性表E={e1, e2, … , e n-1, e n},设计一个算法,将线性表逆置,即使元素排列次序颠倒过来,成为逆线性表E’={ e n, e n-1 , … , e2 , e1 },要求逆线性表占用原线性表空间,并且用顺序表和单链表两种方法表示,分别用两个程序来完成。 2.已知由不具有头结点的单链表表示的线性表中,含有三类字符的数据元素(字母、数字和其他字符),试编写算法构造三个以循环链表表示的线性表,使每个表中只含有同一类的字符,且利用原表中的结点空间,头结点可另辟空间。 三、设计思路 1.顺序表做逆置操作时将对应的首尾元素位置交换,单链表的指针end指向链表的末尾,指针start指向链表头结点,指针s用来找到指向end节点的节点,将指向链表末尾和头结点的存储内容交换,然后头结点指针指向下一节点,s指针从start节点开始遍历寻找指向end 指针的节点,并将end指针赋值为s指针,就完成了单链表的逆置,可以看出单链表和顺序表都可以完成线性表的逆置。 2.分解单链表的实现思路是首先新建3个循环链表,然后顺序遍历单链表,ASCII码判断链表中的元素属于哪一类元素,然后将这个元素添加到对应的循环链表中,从而实现分解单链表的功能。 四、运行结果 1.单链表逆置:

数据结构大作业题目

《数据结构大作业》要求 一、作业目的 1、掌握用数据结构的知识进行Java或者C程序设计。 2、应用所学的数据结构完成一个具有一定实际意义的应用程序的设计、编码、调试,锻炼 实践动手能力,提高编程水平。 二、作业内容 1、图书管理系统 问题描述:实现图书管理系统,主要为图书管理员和借阅者提供管理和查询服务。 基本功能要求: 程序必须采用链表数据结构实现。 图书信息至少包括以下信息:书名,ISBN、作者、出版社、出版时间,入库时间,库存量(图书馆购买此书的数目),借阅数(被借阅的本数)。 图书管理员身份可以完成以下操作: (1)录入:增加一本图书信息; (2)删除:删除某一本图书的信息; (3)修改:修改某一本图书的信息; (4)查询:根据书名或图书ISBN等查询图书信息(可选择:简单条件查询,组合 条件查询等)。 (5)排序:根据书名或入库时间等信息进行排序,尽可能提高查找和维护性能; (6)借书:借出一本书,该书的借阅量增加一本。 (7)还书:还回一本书,该书的借阅量减少一本。 (8)统计:统计所有的借出的图书数目,即:所有图书借阅量之和。 (9)输出:输出所有图书的所有信息,要求格式清晰,方便查看。 扩展功能要求: (1)导出:把用户信息导出到文件中保存; (2)实现图形用户界面与用户进行交互。 2、学生管理系统 必须完成学籍登记表中的下面功能。 登记表中包括:学号、姓名、班级(如:13级软件1班)、性别、手机号码、选修课程等信息。 程序必须采用链表数据结构实现; (1)插入:将某学生的基本信息插入到登记表中; (2)删除:将满足条件的基本信息删除; (3)修改:对基本信息的数据项进行修改;

西电排队论大作业完整版

西电排队论大作业 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

西安电子科技大学 (2016年度) 随机过程与排队论 班级: XXXXXXX 姓名: XXX XXX 学号: XXXXXXXXXX XXXXXXXXXXX 一步转移概率矩阵收敛快慢的影响因素 作者姓名:XXX XXX 指导老师姓名:XXX (西安电子科技大学计算机学院,陕西西安) 摘要:根据课程教材《排队现象的建模、解析与模拟【西安电子科技大学出版 社曾勇版】》,第[马尔可夫过程]中,马尔可夫过程链n时刻的k步转移概率结 果,当k=1时,得到一步转移概率。进而得到一步转移概率矩阵P(1)。为研究 此一步转移概率矩阵(下称一步矩阵)的收敛特性以及影响其收敛快慢的因素,使 用MATLAB实验工具进行仿真,先从特殊矩阵开始做起,发现规律,然后向普通矩 阵进行拓展猜想,并根据算术理论分析进行论证,最终得出一步矩阵收敛快慢的影 响因素。 关键词:一步转移概率矩阵 MATLAB 仿真猜想 一、问题概述 我们讨论时一步矩阵的特性应从以下两方面来分析: (1)矩阵P(n)在满足什么条件时具有收敛特性; 对于矩阵P(n),当P(n)=P(n+1)时,我们说此矩阵 具有收敛特性,简称矩阵 P(n)收敛。 (2)若一个一步矩阵具有收敛特性,那么其收敛速度与什么有关

首先,我们需要明确什么是一步矩阵收敛: 对于一般的一步矩阵P 、矩阵An+1、矩阵An,若有: An+1=AnP=An 那么称该一步转移矩阵可收敛。 二、仿真实验 1、仿真环境 本次采用的是MATLAB仿真实验软件进行仿真实验 2、结果与分析 【1】、特殊矩阵:单位矩阵与类单位矩阵 从图(1)和图(2)可以看出,单位矩阵不具有收敛特性,类单位矩阵并非单位矩阵但是经过n次后也变为单位矩阵,所以此矩阵也不具有收敛特性。此类矩阵也易证明其不具有收敛性。 图(1)单位矩阵图(2):类单位 矩阵 【2】、一般单位矩阵 图(3):一般一步矩阵Ⅰ 图(4):一般一步矩阵 从图(3)和()可以看出他们分别在18次和4次后收敛到一个稳定的值 3、根据实验的猜想 根据在单位矩阵和一般单位矩阵和一般一步矩阵中得到的结果,可以对得出如下结论:类单位矩阵、单位矩阵是不具有收敛性的,而一般的一步矩阵是有收敛性的,而且收敛速率有快有慢。 对于上面结论中的状况,我们首先观察如上四个矩阵,不难发现,在矩阵收敛的最终结果矩阵中,其每行和均为1,而且每列上的值均为相同值。最终概率分布结果也是矩阵收敛后的一行。 所以根据上述的结果及分析做出如下猜想: 每一列比较均匀的矩阵收敛速度较快;与类单位矩阵类似的矩阵收敛速度较慢。 在极限情况下,有如下情况:

数据结构大作业(试题题目)

浙江大学城市学院实验报告 课程名称数据结构基础 实验项目名称实验九栈的应用 学生姓名丁汀专业班级信管1006 学号31001444 实验成绩指导老师(签名)日期 一.实验目的和要求 1、学会通过对问题的分析,设计一种合理的数据结构,并进行定义及操作的实现。 2、掌握利用栈各种操作来进行具体的实际应用。 3、加强综合程序的分析、设计能力。 二.实验内容 1、共享栈的设置,问题描述如下: 在一个数组空间stack[MaxSize]中可以同时存放两个顺序栈,栈底分别处在数组的两端,当第1个栈的栈顶指针top1等于-1时则栈1为空,当第2个栈的栈顶指针top2等于MaxSize时则栈2为空。两个栈均向中间增长,当有元素向栈1进栈时,使top1增1得到新的栈顶位置,当有元素向栈2进栈时,使top2减1得到新的栈顶位置。当top1==top2-1或top1+1==top2时,存储空间用完,无法再向任一栈做进栈操作,此时可考虑给出错误信息并停止运行。 要求: ⑴给出共享栈的顺序存储类型定义。 ⑵给出共享栈的抽象数据类型定义。 ⑶建立头文件test9_stack.h,包含共享栈的基本操作实现函数;建立主程序文件test9.cpp,在主函数中对共享栈的各个操作进行测试。 2、利用上述共享栈,实现火车车厢的调度模拟 设火车车厢分为三类:硬座、硬卧、软卧,分别用A、B、C表示。下图描述车厢调度的示意图,图中右端为排列无序的车厢,左端为调度后的车厢排列,使得所有软卧车厢在最前面、所有硬卧车厢在中间、所有硬座车厢在最后。 编程模拟上述车厢调度过程。 提示:两个辅助铁轨相当于两个栈,右端车厢进入用相应字符串给出,如“BBACBCAABBCAA”,左端车厢的用新生成的字符串给出。在test9_stack.h 给出模拟函数,并在主函数中进行调用测试。

云南大学数据库期末大作业:数据库设计

云南大学软件学院实验报告 课程:数据库原理与实用技术实验学期:任课教师: 专业:学号:姓名:成绩: 期末大作业:Electronic Ventor 数据库设计 一、实验目的 (1)掌握数据库设计的基本方法 (2)掌握各种数据库对象的设计方法 (3)熟练掌握DBA必须具备的技能 二、实验内容 1、根据项目的应用和项目的需求说明文档,进行详细的需求分析,给出需求分析的结果。 (1)客户可以在网站上注册,注册的客户要提供客户的姓名、电话、地址,以方便售后和联系,姓名即作为用户名,和密码一起用于注册和登录,客户编号可唯一识别用户,卡号可网上支付。其中地址、电话以方便联系和寄货; (2)网站管理员可以登记各种商品,供客户查询,订购。登记商品时要提供商品的名称、价格,商店中现有商品量,商品编号可唯一识别商品; (3)类别表示商品所属类别,类别编号可唯一识别类别,其中包含了,商品类别名称和制造厂商,可以对商品进行分类售卖; (4)客户可以在网上下订单,也可以到实体店购物,其在订单上所选择的支付方式不同(信用卡、借记卡、现金,现金代表实体店购物),网站管理员可以查看订单,并及时将订单的处理情况更新(比如货物已寄出的信息,订单状态:0:未处理,1:已处理,2:已发货);订单编号可唯一识别订单,订单中包含订单产生时间,订单状态,支付方式和支付总额; (5)实体商店有自己的店名,卖多种商品,每个商店都有固定的地址,顾客可以到店中买商品,(注:在实体店中购买商品的顾客一律将顾客名默认为佚名),当商店中的库存量小于10时会有提醒到仓库中拿货; (6)配送单中包含查询号可唯一识别配送单,配送人,联系方式; (7)仓库中仓库编号可唯一识别仓库,其中每个仓库都有区号,代表其地址。 (8)各实体间关系 1)一个客户可以购买多种商品,一种商品可以被多个客户购买; 2)一个商品属于且仅属于一种类别,一种类别的商品可以包含多个商品或没有; 3)一种商品放在多个商店中销售,一个商店至少销售一种或销售多种商品; 4)一个订单对应一个客户,一个客户对应多个订单; 5)一个订单对应至少有一件商品或多件,一个商品对应多个订单; 6)一个订单可以有一个商品配送单 7)一个仓库可以存放多种商品,一种商品可以存放在一个仓库;

2016年下半学期西电嵌入式系统设计大作业解析

嵌入式系统设计大作业 授课老师:孙江敏 学院:计算机学院 学生姓名: 学号: 日期:2016年6月12日

嵌入式系统设计大作业 1、判断题 ( ×)1.嵌入式系统调试通常可以分为硬件级调试和在线仿真器调试。 ( √)2.在ARM处理器中,快速中断(FIQ)的优先级高于外部中断(IRQ)。( ×)3.ROM能够永久或半永久地保存数据,ROM内的数据永远不会丢失。( √)4.内建测试系统(BIST)是SoC片上系统的重要结构之一,JTAG测试接口是IC 芯片测试方法的标准。 ( ×)5.VHDL的基本单元描述不包括库。 ( ×)6.嵌入式ARM架构的嵌入式处理器同时支持大端、小端(Big/Little-Endian)数据类型。 ( ×)7.嵌入式操作系统通常采用整体式内核或层次式内核的结构。 ( ×)8.ARM7TDMI中的T代表增强型乘法器。 ( ×)9.看门狗(Watch Dog)实际是一个简单的定时器,在固定时间内若正常清零,则自动复位处理器。 ( √)10.ARM-CPU由多家不同制造商生产,芯片外部提供的总线是不一致的。( √)11.Linux 内核稳定、功能强大并且可以裁减,因为非常适合嵌入式应用。( √)12.Linux 内核的中断服务程序运行于与所有进程都无关的中断上下文中。( √)13.Linux遵循POSIX标准,意味着绝大多数UNIX应用程序不需要任何改动就可以在Linux系统上编译且运行。 ( ×)14.Linux内核支持可以裁减的功能,因此它属于微内核架构。 ( √)15.Linux在fork()时采用了写时拷贝(简称COW)技术,允许父进程和子进程同时共享相同的物理页面。 ( √)16.任何一个Linux应用程序都需要调用exit()函数。 ( √)17.当前的Linux调度算法非常高效,但是查找当前最高优先级的可运行程序时,开销会随着可运行程序的多少而变化。 ( √)18.Linux的系统调用是作为C库的一部分提供的。 ( ×)19.为了对硬件做出迅速的响应并完成对时间严格的操作,中断处理下半部必须在关中断状态下执行。 ( ×)20.Linux的内存管理采用了分页的机制,因此即使是内核本身也全部是分页的。 ( ×)21.嵌入式系统由上到下主要分为3个层次:应用软件层,系统软件层,硬件层。 ( ×)22.嵌入式系统的软硬件是独立设计的。 ( √)23.嵌入式系统设计需要建立交叉开发环境。 ( √)24.通用系统程序开发不需要建立和使用交叉编译环境。 ( √)25.对于C++代码,gcc命令只能编译其源文件,而不能自动和C++程序使用的库链接。 ( √)26.嵌入式系统可以没有操作系统。

2016-2017第一学期期末考试数据结构大作业答案

一、应用题(每小题10分,共50分) 1.把下图中的二叉树转化成森林。 解:1 8 / \ | \ 2 5 6 7 / \ 3 4 2.给定表(45,36,56,6,64,32,8,41),按数据元素在表中的次序构造一棵二叉查找树。解:45 ∕﹨ 36 56 ∕﹨﹨ 6 41 64 ﹨ 32 ∕ 8 3.写出中缀表达式A-(B+C/D)*E的后缀形式。

解: 4. 下图是一个地区的交通网络模型,顶点表示城市,边表示城市间的公路,边的权值表示构造公路的费用,请问如何构造出能连通各个城市且造价最低的交通网,并写出其构造过程。 解:由题意知,连通各个城市且造价最低的交通网:1→3→5→2→4,从3分叉、3→0,3→6.连通各个城市且造价最低的交通网总费用为:3+7+2+6+5+15=38 5. 已知数据序列为12,5,9,20,6,31,24,对该数据序列进行排序,试写出冒泡排序每趟的结果。 解:初始键值序列12 5 9 20 6 31 24 第一趟排序 [5 9 12 6 20 24] 31 第二趟排序 [5 9 6 12 20] 24 31 第三趟排序 [5 6 9 12] 20 24 31 第四趟排序 5 6 9 12 20 24 31 二、算法设计题(每小题50分,共25分)

1.判断单链表head(head指向表头)是否是递增的。 解:int GetNumofItemInLnkList(LNode *head) { int cnt = 0; LNode *p = head->next; while(p) { cnt++; p=p->next;} return cnt; } 2.设一棵二叉树以二叉链表为存储结构,试写一算法求该二叉树上度为2的结点个数。答:设根节点为r。 情况1,如果r 既有左孩子又有右孩子,则返回1 +递归求左子树度为2节点个数+ 递归求右子树度为2节点个数。 情况2,如果r 只有左孩子,则返回递归求左子树度为2节点个数。 情况3,如果r 只有右孩子,则返回递归求右子树度为2节点个数。 情况4,如果r 既没有左孩子又没有右孩子,则返回0

云南大学数据库期末大作业:数据库设计

大学软件学院实验报告 课程:数据库原理与实用技术实验学期:任课教师: 专业:学号::成绩: 期末大作业: Electronic Ventor 数据库设计 一、实验目的 (1)掌握数据库设计的基本方法 (2)掌握各种数据库对象的设计方法 (3)熟练掌握DBA必须具备的技能 二、实验容 1、根据项目的应用和项目的需求说明文档,进行详细的需求分析,给出需求分析的结果。 (1)客户可以在上注册,注册的客户要提供客户的、、地址,以方便售后和联系,即作为用户名,和密码一起用于注册和登录,客户编号可唯一识别用户,卡号可网上支付。其中地址、以方便联系和寄货; (2)管理员可以登记各种商品,供客户查询,订购。登记商品时要提供商品的名称、价格,商店中现有商品量,商品编号可唯一识别商品; (3)类别表示商品所属类别,类别编号可唯一识别类别,其中包含了,商品类别名称和制造厂商,可以对商品进行分类售卖; (4)客户可以在网上下订单,也可以到实体店购物,其在订单上所选择的支付方式不同(信用卡、借记卡、现金,现金代表实体店购物),管理员可以查看订单,并及时将订单的处理情况更新(比如货物已寄出的信息,订单状态:0:未处理,1:已处理,2:已发货);订单编号可唯一识别订单,订单中包含订单产生时间,订单状态,支付方式和支付总额; (5)实体商店有自己的店名,卖多种商品,每个商店都有固定的地址,顾客可以到店中买商品,(注:在实体店中购买商品的顾客一律将顾客名默认为佚名),当商店中的库存量小于10时会有提醒到仓库中拿货; (6)配送单中包含查询号可唯一识别配送单,配送人,联系方式; (7)仓库中仓库编号可唯一识别仓库,其中每个仓库都有区号,代表其地址。 (8)各实体间关系 1)一个客户可以购买多种商品,一种商品可以被多个客户购买; 2)一个商品属于且仅属于一种类别,一种类别的商品可以包含多个商品或没有; 3)一种商品放在多个商店中销售,一个商店至少销售一种或销售多种商品; 4)一个订单对应一个客户,一个客户对应多个订单; 5)一个订单对应至少有一件商品或多件,一个商品对应多个订单; 6)一个订单可以有一个商品配送单 7)一个仓库可以存放多种商品,一种商品可以存放在一个仓库;

西电最优化大作业

最优化大作业 学院电子工程学院 专业 学号 姓名

1.第一题 分别用牛顿法和变尺度法求解优化问题. Minf(x)=x12-2x1x2+4x22+x1-3x2. 牛顿法 初始点选择 [2 2]T 迭代步骤 已知目标函数f(X)及其梯度g(X),Hesee矩阵G(X),终止限ε.(1)选定初始点X0;计算f0=f(X0),g0=g(X0);置k=0. (2)计算Hesee矩阵 (3)由方程G k P k=-g k解出P k。 (4)计算X k+1=X k+P k,f k+1=f(X k+1),gk+1=g(X k+1). (5)判别终止条件是否满足,若满足,则打印结果。否则令k=k+1,转(2). 实验结果如下:

变尺度法 初始点选择 [0 0]T 迭代步骤 (1)选定初始点X0;计算F0=F(X0),G0=G(X0);选定初始矩阵H0,要求H0对称正定。置k=0 (2)计算搜索方向P K=-H K G K. (3)作直线搜索X K=1=ls(X K+1),S K=X K+1-X K,y k=g k+1-g k。 (4)判别终止条件是否满足:若满足,则X k+1就是所求的极小点,打印,结束。否则转(5)。 (5)计算H K+1=H K+E K.

(6)K=K+1.转(2)。 实验结果如下: 2.第二题 利用外点法和内点法解下列约束问题. minf(x)=(x1-3)2+(x2-2)2 s.t. h(x)=x1+x2-4≤0 外点法 初始点选择 [2 1]T 迭代步骤 给定终止限ε(可取ε=6- 10).

(1).选定初始点0X ,惩罚因子01>M (可取11=M ). 惩罚因子放大系数10=C ,置1=k . (2).假设已获得迭代点1-k X ,以1-k X 为初始点,求解无约束问题 ),(min k M X F . 设其最优点为k X . (3).若εα≤)(X M k 则k X 就是所要求的最优解,打印输出))(,(k k X f X ,结束; 否则转至过程(4). (4).置,1,1+==+k k CM M k k 转至过程(2). 实验结果如下: 内点法 初始点选择 [2 1]T

《数据结构》大作业

《数据结构》设计说明书 --- 二叉排序树 学号: 姓名: 班级: 指导教师:

一.需求分析 1. 二叉排序树的概念 也称为二叉查找树. (1)左子树的所有结点的值<根结点的值 (2)右子树的所有结点的值>根结点的值 (3)左子树、右子树都是二叉排序树。 2.二叉排序树的插入和建立 在一棵二叉排序树中插入值为k的结点,步骤如下: ①若二叉排序树为空,则生成值为k的新结点s,同时将新结点s作为根结点插入。 ②若k小于根结点的值,则在根的左子树中插入值为k的结点。 ③若k大于根结点的值,则在根的右子树中插入值为k的结点。 ④若k等于根结点的值,表明二叉排序树中已有此关键字,则无须插入。 3.二叉排序树的查找过程 查找给定值k的过程如下: ①若二叉排序树为空,则表明查找失败,返回空指针;否则,若给定值k等于根结点的值,则表明查找成功,返回根结点; ②若给定值k小于根结点的值,则继续在根的左子树中查找; ③若给定值k大于根结点的值,则继续在根的右子树中查找。 4.二叉排序树的删除操作 ①若二叉排序树为空,则表明不存在删除的结点,不进行删除操作。 ②若给定值k小于根结点的值,则继续在根的左子树中删除。 ③若给定值k大于根结点的值,则继续在根的右子树中删除。 ④若给定值k等于根结点的值,则根结点即为要删除的结点,此时需要根据上述分析的三种结点情况:叶子结点、单支结点或双支结点,执行相应的删除操作。 二.概要设计 数据结构的定义 #include "stdio.h" #include "malloc.h" #define NULL 0 typedef struct { int key; }ElemType; //key为创建二叉排序树的关键字 typedef struct BiTNode { ElemType data;

西电EDA满分大作业

EDA报告 题目 VHDL设计初步 学院电子工程学院 专业 学号 导师姓名朱燕

目录 第一章实验部分(流水灯) (3) 1、程序设计: (3) 2、程序代码........................................................................................... 错误!未定义书签。 3、程序调试........................................................................................... 错误!未定义书签。 第二章习题部分............................................................................................. 错误!未定义书签。 习题一..................................................................................................... 错误!未定义书签。 习题二..................................................................................................... 错误!未定义书签。 习题三..................................................................................................... 错误!未定义书签。 习题四..................................................................................................... 错误!未定义书签。 习题五..................................................................................................... 错误!未定义书签。 习题六..................................................................................................... 错误!未定义书签。 习题七..................................................................................................... 错误!未定义书签。 引言 随着大规模集成电路技术和计算机技术的不断发展,在涉及通信、国防、航天、医学、工业自动化、计算机应用、仪器仪表等领域的 电子系统设计工作中,EDA技术的含量正以惊人的速度上升;电子类 的高新技术项目的开发也逾益依赖于EDA技术的应用。即使是普通的电子产品的开发,EDA技术常常使一些原来的技术瓶颈得以轻松突破,从而使产品的开发周期大为缩短、性能价格比大幅提高。不言而喻,EDA技术将迅速成为电子设计领域中的极其重要的组成部分。

数据结构大作业 Peg Solitaire

Beijing institute and technology Data structure Assignment(2013/2014) Peg Solitaire Aim This assignment is designed to assess your ability to choose suitable data structures and algorithms to meet practical requirements. Date of Publication This assignment was published on Friday, March 28, 2014. Submission This assignment is to be completed and submitted with a completed Assignment Submission Form to me (send to dshomeworks@https://www.doczj.com/doc/b34194078.html,), by May8, 2014. Background Peg solitaire is a traditional game, played with marbles (O) sat on wooden board. The game begins in some known state e.g.: . . O . . . . O . . O O . O O . . O . . . . O . . The pegs can take another peg by jumping it (as in draughts) going up, down, left or right. For the above board, . . . . . . . . . . . . O . . . . . . . . . . . . To do this you will use a list of boards. The initial board is put into this list. Each board in the list is, in turn, read from the list and all possible moves from that board added into the list. The next board is taken, and all its

自动控制大作业-西电

自动控制大作业-西电-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

题目:自动控制原理大作业指导老师: 学院:电子工程学院 专业:电子信息工程 学生姓名: 学号: 2017年7月11日

实验目的 1,学会使用matlab模拟仿真系统的根轨迹图。 2,理解K值对系统响应的影响。 3,理解校正环节对系统性能的影响。 实验内容 一、对教材P84页的图3-38天线位置控制系统,在给定传递函数下,试用MATLAB程序仿真 1,单位反馈作用下系统的根轨迹图 2,画出Bode图 3,若限定系统超调量σ%<35%,确定K的取值范围(K为开环传递系数)。 4,当K取不同的值时,画出单位阶跃响应曲线。 Matlab程序如下所示: echo on pause %strike any key to continue clc

K=[1 7 17.1 28 60]; num1=K(1);p1=[1 0];p2=[0.05 1];p3=[0.025 1]; den=conv(conv(p1,p2),p3); H1=tf(num1,den); H2=tf(K(2),den); H3=tf(K(3),den); H4=tf(K(4),den); H5=tf(K(5),den); pause;clc; damp(H1); rlocus(H1);%单位反馈作用下系统的根轨迹图 pause;clc; bode(H1);pause;clc; impulse(H1);pause;clc; step(feedback(H1,1));pause;clc;%K=1是的单位阶跃响应step(feedback(H2,1));pause;clc;%K=7是的单位阶跃响应step(feedback(H3,1));pause;clc;%K=17.1是的单位阶跃响应step(feedback(H4,1));pause;clc;%K=28是的单位阶跃响应step(feedback(H5,1));pause;clc;%K=60是的单位阶跃响应echo off

数据结构大作业参考答案讲诉

数据结构大作业 只收手工纸面版,统一用学院的实验稿纸。 自留底稿,不退。 十一、讨论题:顺序存储和链表存储的优缺点对比分析。 答:顺序存储的优点是可以做到“随机访问”,缺点是动态操作时间效率低下; 链表存储的优点是动态操作高效,不会引起数据的移动,缺点是只能进行“顺序访问”,不能进行“随机访问”。 十二、讨论题:循环队列解决了什么问题?优点是什么?如何巧妙地实现环状? 答:循环队列解决了简单的队列的顺序存储的“假溢出”问题。 它的优点是:相对于一般的顺序存储队列,它不用移动数据就解决了“假溢出”问题,这样就提高了时间效率,此外,它通过求模运算可以成功求出入队、出队的地址,通过牺牲一个空间成功判断了队空和队满两种情况。 实现过程:通过求模运算求出入队、出队的地址:rear=(rear+1)%MaxSize; front=(front+1)% MaxSize(front为队头,rear为队尾,MaxSize为循环队列的长度)。 牺牲一个空间区分了队空和队满两种情况:front=rear则队空rear+1=front则队满。 十三、讨论题:一般而言,如何比较递归和非递归算法的优缺点? 答:递归在算法上比非递归更为简单,且比非递归更为容易理解;而非递归算法也有它的好处,递归用到了栈,要重复调用自己,重复调用自己就意味着要循环,这样,时间效率就低下,非递归算法与之相比,效率就比较高。 十四、讨论题:常规的排序算法的共同点是什么? 答:常规的排序算法的共同点是:逐步缩小待排空间,每次增加一个已排空间。 十五、讨论题:字符串和线性表的关系是什么?字符串的操作主要体现在什么方面? 答:字符串和线性表的关系是:字符串是一种特殊的线性表。 字符串的操作主要体现在:一次性处理大量字符。 十六、讨论题:栈和队列的工作原理以及各自的应用范例? 答:栈的工作原理:只允许在栈顶进行数据的插入、删除操作,进栈、出栈也只能在栈顶进行,数据拥有“后进先出”的性质。应用范例:用于产生数据逆序,如象棋的悔棋功; 也用于保护现场,如递归函数的实现。 队列的工作原理:在队尾插入数据,在对头删除数据,数据从队尾进队,从队投出队,数据拥有“先进先出”的性质。应用范例:基于时间公平的机制所必需的数据结构;是任何需要进行缓冲区处理的比较好的实现方案。

西电数据挖掘大作业k-means和k-medoids

西电数据挖掘大作业k- m e a n s和k-m e d o i d s -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

题目:数据挖掘 学院:电子工程学院专业:智能科学与技术学生姓名: ** 学号: 02115*** k-means实验报告

一、waveform数据 1、算法描述 1.从数据集中任意选取k个赋给初始的聚类中心c1, c2, …, c k; 2.对数据集中的每个样本点x i,计算其与各个聚类中心c j的欧氏 距离并获取其类别标号: 3.按下式重新计算k个聚类中心; 重复步骤2和步骤3,直到达到最大迭代次数为止 2、实验结果

二、图像处理 1、算法描述 同上; 2、实验结果 代码: k_means: %%%%%%%%%K_means%%%%%%%% %%%%%%%%%函数说明%%%%%%%% %输入: % sample——样本集; % k ——聚类数目; %输出: % y ——类标(从0开始) % cnew ——聚类中心 % n ——迭代次数

function [y cnew n]=k_means(sample,k) [N V]=size(sample); %N为样本的个数 K为样本的维数 y=zeros(N,1); %记录样本类标 dist=zeros(1,k); rand_num=randperm(N); cnew=(sample(rand_num(1,1:k),:));%随机初始化聚类中心 cold=zeros(k,V); n=0; while(cold~=cnew) cold=cnew; n=n+1; %记录迭代次数 %对样本进行重新分类 for i=1:N for j=1:k if(V==1) dist(1,j)=abs(sample(i,:)-cold(j,:)); else dist(1,j)=norm(sample(i,:)-cold(j,:)); end end for s=1:k if(dist(1,s)==min(dist)) y(i,1)=s-1; end end end %更新聚类中心 cnew=zeros(k,V); flag=zeros(k,1); for i=1:N for j=1:k if (y(I,1)==j-1) flag(j,1)=flag(j,1)+1; cnew(j,?=cnew(j,?+sample(I,?; end end end for j=1:k cnew(j,?=cnew(j,?/flag(j,1); end end k_means_waveform: clear;clc;

相关主题
文本预览
相关文档 最新文档