西电数据结构大作业
西南大学网教 (0012)《数据结构》大作业A 答案

则关键字为49的地址为。
9)数据结构被形式地定义为(D, R),其中D是的有限集合,R是D上的有限集合。
10)一个算法的效率分为效率和效率。
3、应用题1)编写算法,将一个头指针为head不带头结点的单链表改造为一个单向循环链表,并分析算法的时间复杂度。
2)已知二叉树的先序遍历序列为ABCDEFGH,中序遍历序列为CBEDFAGH,画出二叉树。
然后写出该二叉树的后序遍历序列。
3)试用权集合{12,4,5,6,1,2}构造哈夫曼树,并计算哈夫曼树的带权路径长度。
4)已知图G如下所示,根据Prim算法,构造最小生成树。
(要求给出生成过程)5)设哈希表HT表长m为13,哈希函数为H(k)=k MOD m,给定的关键值序列为{19,14,23,10,68,20,84,27,55,11}。
试求出用线性探测法解决冲突时所构造的哈希表,并求出在等概率的情况下查找成功的平均查找长度ASL。
二、大作业要求大作业共需要完成22道题:第1大题必做,满分30分;第2大题必做,满分30分;第3大题选作2题,满分40分。
答卷提交要求:考试题提前公布,学生下载试题和答题卷后,在答题卷上答题。
完成后需网上提交答卷。
答卷于11月20日--12月6日通过点击页面左侧导航栏内“我的考试”-“课程论文/大作业”提交。
1、选择题1) C 2) C 3) D 4) A 5) C6) C 7) B 8) D 9) A 10) A2、填空题1) l==l->next2)栈顶3)三元组顺序表十字链表。
4)LOC (A[0][0])+(n*i+j)*k5)R[2i+1]6) 先序遍历7)n-18)99) 数据元素关系10)时间效率空间效率3、应用题2)已知二叉树的先序遍历序列为ABCDEFGH,中序遍历序列为CBEDFAGH,画出二叉树。
然后写出该二叉树的后序遍历序列。
答:后序遍历序列CEFDBHGA3)试用权集合{12,4,5,6,1,2}构造哈夫曼树,并计算哈夫曼树的带权路径长度。
数据结构大作业

班级021051学号021050**数据结构大作业题目 Huffman的编码与译码学院电子工程学院专业智能科学与技术学生姓名****导师姓名朱虎明Huffman 编码与译码1.实验目的:在掌握相关基础知识的基础上,学会自己设计实验算法,熟练掌握Huffman 树的建立方法,Huffman 编码的方法,进而设计出Huffman 译码算法,并编程实现。
2.实验要求:制作出能够实现基于26个英文字母的任意字符串的编译码。
写出技术工作报告并附源程序。
3.实验内容及任务:3.1.设字符集为26个英文字母,其出现频度如下表所示。
3.2.建Huffman 树;3.3.利用所建Huffman 树对任一字符串文件进行编码——即设计一个Huffman 编码器;3.4.对任一字符串文件的编码进行译码——即设计一个Huffman 译码器。
实现步骤:(1)数据存储结构设计; (2)操作模块设计; (3)建树算法设计;51 48 1 15 63 57 20 32 5 1 频度z y x w v u t 字符11611882380频度p 21 f q15 g r 47 h s o n m l k j 字符 57 103 32 22 13 64 186 频度 i e d c b a 空格 字符(4)编码器设计;(5)译码器设计4.分析以及算法描述4.1.分析问题1)首先学习二叉树的知识,了解二叉树的路径、权数以及带权路径长度计算。
2)认识霍夫曼树,了解霍夫曼树的定义,构造霍夫曼树构造算法①又给定的n个权值{w1,w2,w3,……,w n}构造根节点的二叉树,从而得到一个二叉树森林F={T1,T2,T3,……T n}。
②在二叉树森里选取根节点全职最小和此最小的两棵二叉树作为左右节点构造新的二叉树,此时新的二叉树的根节点权值为左右子树权值之和。
③在二叉树森林中删除作为新二叉树的根节点左右子树的两棵二叉树,将新的二叉树加入到二叉树森林F中。
西安电子科技大学计算机辅修专业数据结构试题

西安电子科技大学计算机辅修专业数据结构试题考试时间 120 分钟试题1.考试形式:闭卷;2。
考试日期:2013年12月10 日3.本试卷共四大题,满分100分。
学院+班级学号姓名任课教师一. 选择题(15小题,每题2分,共30分)1. 逻辑上通常可以将数据结构分为(C)A.动态结构和静态结构B.顺序结构和链式结构C.线性结构和非线性结构D.初等结构和组合结构2. 在下列对顺序表进行的操作中,算法时间复杂度为O(1)的是(A)A.访问第i个元素的前驱(1<ni≤)B.在第i个元素之后插入一个新元素(ni≤)1≤C.删除第i个元素(n≤)1≤iD.对顺序表中元素进行排序3. 一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1≦i≦n)个元素是( B )。
A. 不确定B. n-i+1C. iD. n-i4. 如果将矩阵A n×n的每一列看成一个子表,整个矩阵看成是一个广义表L,即L=((a11,a21,…,a n1),( a12,a22,…,a n2),…,(a1n,a2n,…,a nn)),并且可以通过求表头head和求表尾tail的运算求取矩阵中的每一个元素,则求得a21的运算是(A )A. head (tail (head (L)))B. head (head(head(L)))C. tail (head (tail (L)))D. head (head (tail (L)))5.设森林F中有三棵树,第一、第二、第三棵树的结点个数分别为M1,M2和M3,则与森林F对应的二叉树根结点的右子树上的结点个数是( D )。
A.M1 B.M1+M2 C.M3 D.M2+M36. 栈和队列的共同点是( C )。
A. 都是先进先出B. 都是先进后出C. 只允许在端点处插入和删除元素D. 没有共同点7. 若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在B中确定a ij(i<j)的位置k的关系为( B )。
西安电子科技大学期末数据结构试题及详细答案

1.数据结构试卷(一)、单选题(每题 2分,共20分)1. 栈和队列的共同特点是()。
A. 只允许在端点处插入和删除元素B. 都是先进后岀C. 都是先进先岀D.没有共同点2. 用链接方式存储的队列,在进行插入运算时 (). A. 仅修改头指针 B. 头、尾指针都要修改 C. 仅修改尾指针 D. 头、尾指针可能都要修改3. 以下数据结构中哪一个是非线性结构?()A.队列B.栈C.线性表D.二叉树4. 设有一个二维数组 A[m][n],假设A[0][0]存放位置在644(io ), A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](io )存放在什么位置?脚注(io )表示用10进制表示。
7. 若有18个元素的有序表存放在一维数组 找A : 3 ]的比较序列的下标依次为( A.1,2,3 B. 9,5,2,3C. 9,5,3D. 9,4,2,38.对n 个记录的文件进行快速排序,所需要的辅助存储空间大致为A. O (1)B. O (n )C. O (1og 2n )D. O (n2)9. 对于线性表(7,34, 55, 25, 64, 46,20,10)进行散列存储时,若选用 H (K ) =K %9作为散列 函数,则散列地址为1的元素有( )个,A . 1B . 2C . 3D . 410. 设有6个结点的无向图,该图至少应有 ()条边才能确保是一个连通图。
A.5B.6C.7D.8二、填空题(每空1分,共26分) 1. 通常从四个方面评价算法的质量: ___________ 、 __________ 、 __________ 和 ________ 。
2. 一个算法的时间复杂度为(n 3+n 2log 2n+14n )/n 2,其数量级表示为 __________ 。
3. 假定一棵树的广义表表示为 A ( C , D (E , F , G ), H (I , J )),则树中所含的结点数为 __________ 个,树的深度为 ____________ ,树的度为 _________ 。
数据结构课程设计大作业

课程设计(数据结构)一、题目的目的和要求1.设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。
(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。
(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。
2.设计题目要求设计内容:本系统应完成以下几方面的功能:学生信息的建立:create();学生信息的插入:insert();学生信息的查询:search();学生信息的修改:change();学生信息的删除:delete();学生信息的输出:print()。
设计要求:(1)每条记录至少包含:姓名(name )、(xuehao),(kemu),(chengji)属性。
(2)作为一个完整的系统,应具有友好的界面和较强的容错能力(3)程序能正常运行,并写出课程设计报告二、设计进度及完成情况三、主要参考文献及资料[1] 叶核亚编著. 数据结构(Java版)(第3版). 北京:电子工业出版社,2011[2] 施平安等译. JAVA程序设计教程(第5版). 北京:清华大学出版社,2007[3] Java相关资料四、成绩评定设计成绩:(教师填写)指导老师:(签字)目录第一章系统概述 (1)第二章系统分析 (1)第三章系统设计 (1)第四章系统实现 (10)第五章系统运行与测试 (11)第六章总结与心得 .............................................. 错误!未定义书签。
参考文献 ................................................................ 错误!未定义书签。
第一章系统概述在这次的课程设计中我们选择的题目是:学生信息系统,能够添加、删除、查询联系人等。
由于自己的知识有限,程序可能不是太完美,但是我会认真对待,尽自己最大女里去完成此次任务!!!第二章系统分析学生信息系统主要用于帮助用户保存学生信息,方便用户查询联系人的相关信息。
西安电子科技大学机电工程学院 软件技术大作业

西安电子科技大学机电工程学院软件技术大作业任课老师李凯上机报告一、上机目的1.熟悉线性表,链表,队列,二叉树等数据结构2.学习利用C语言实现多种数据结构的建立和多种操作(插入,删除等)3.在编程过程中学习程序的调试方式二、上机内容假设称正读反读都相同的字符序列为回文。
例如,‘abba’,‘abcba’都是回文,‘ababab’不是回文,试编写程序判别从标准输入读入的以’@’为结束符的字符序列是否是回文。
三·设计说明5题1)用一维数组实现。
(当然可以参考用课件中的队列的方法,但就算法繁简来说,用数组实现更为简单高效)2)基本思想:设数组长度为n。
分别将a[0]与a[n-1],a[1]与a[n-2],a[2]与a[n-3]……比较,判断是否相等,相等则计数变量k加1,否则退出循环。
最后判断k值。
若是回文,则k应该等于[n/2],否则就不是回文。
3)输入说明:以$输入为结束标志三、调试分析1.调试所遇到问题1)编译时,头文件包含不全2)逻辑一般没有错误,而问题多出在实际实现过程与自己想法间的差距。
例如:2题,判断条件(s!=r)&&(r->next!=s)。
我想实现的是当结点数为偶数时,头尾两部分交换结束的条件是s=r;当为奇数时,结束的条件是s跑到r的后面。
因此在写程序初,逻辑运算用的是||(或),即二种情况中的一种,结果运行时怎么都不正确。
后来在老师帮助下才找到错误。
3)对于算法实际运行的方式理解不到位。
在做第6题时认为该题应该比较简单,因为二叉树的建立和遍历课本上都有现成的算法,自己只需添加相应的判断条件即可。
结果调试发现怎么做都不正确,后来仔细想递归算法的细节才注意到统计变量递归一次又从头开始统计,所以结果始终是结点数1,叶子数0。
改进作法是将统计量变为一个初值为0的参数,发现也是不行的。
最后只能改为全局变量。
4)输入方式不正确。
在输入时没有注意输入方式,随便加空格,使得运行结果错误。
西电最优化上机报告(大作业)

上机报告一.最速下降法算法简述:1.在本例中,先将最速下降方向变量赋一个值,使其二范数满足大于ε的迭代条件,进入循环。
2.将函数的一阶导数化简,存在一个矩阵,将其hesse矩阵存在另一个矩阵。
依照公式求出α,进而求出下一任迭代的矩阵初值。
循环内设置一个计数功能的变量,统计迭代次数。
3.求其方向导数的二范数,进行判别,若小于ε,则跳出循环,否则将继续迭代。
4.显示最优解,终止条件,最小函数值。
心得体会:最速下降法的精髓,无疑是求梯度,然后利用梯度和hesse矩阵综合计算,求解下一个当前最优解。
但是,要求函数是严格的凸函数,结合严格凸函数的大致图像,这就给初值的选取提供了一点参考。
例如在本例中,由于含有两个变量的二次方之和,结合大致图像,想当然的,初值的选取应当在原点附近;又因为变量的二次方之和后面,还减去了变量的一次形式和一次混合积,所以初值的选取应该再向第一象限倾斜。
综合以上考量,第一次选取(1,1)作为初值,判别精度方面,取到千分位,暂定为0.001。
运行以后,结果显示迭代了25次,最优解为(3.9995,1.9996),终止条件为5.4592e-04,目标函数为-8.0000。
这个结果已经相当接近笔算结果。
整体的运行也比较流畅,运算速度也比较快。
第二次取值,决定保留判别精度不变,将初值再适当向第一象限倾斜,取(2,2)作为初值,运行后,显示只迭代了11次!最优结果显示(3.9996,1.9997),终止条件为3.6204e-04,最优解-8.0000。
可见,最优结果更接近理想值,终止条件也变小了,最关键的是,迭代次数减少至第一次的一半以下!这说明以上初选取的方向是对的!第三次再进行初值细化,判别精度仍然不变,初值取(3,3)。
结果令人兴奋,只迭代了四次!最优解已经显示为(4.0000,2.0000),终止条件为2.4952e-04,目标函数-8.0000。
第四次,判别精度不变,取初值(4,4)。
杭州电子科技大学大二计算机专业数据结构试卷及答案

杭州电子科技大学学生考试卷〔A〕卷一.是非题1. 数据结构可用三元式表示〔D,S,P〕。
其中:D是数据对象,S是D上的关系,P是对D的根本操作集。
(f)2 简单地说,数据结构是带有结构的数据元素的集合。
(t)3 判断带头结点的非空循环单链表〔头指针为L〕中指针p所指结点是最后一个元素结点的条件是:p->next==L。
(t)4 线性表的链式存储结构具有可直接存取表中任一元素的优点。
(f)5 线性表的顺序存储结构优于链式存储结构。
(f)6. 在单链表P指针所指结点之后插入S结点的操作是:P->next= S ; S-> next = P->next;。
(f)7 对于插入、删除而言,线性表的链式存储优于顺序存储。
(t)8. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
(f)9. 栈和队列是操作上受限制的线性表。
(t)10. 队列是与线性表完全不同的一种数据结构。
(f)11. 队列是一种操作受限的线性表,凡对数据元素的操作仅限一端进行。
(f)12. 栈和队列也是线性表。
如果需要,可对它们中的任一元素进行操作。
(f)13. 栈是限定仅在表头进行插入和表尾进行删除运算的线性表。
(f)14. 二叉树中每个结点有两个子结点,而对一般的树,则无此限制,所以,二叉树是树的特殊情形。
(f)15 二叉树是一棵结点的度最大为二的树。
(f)16 赫夫曼树中结点个数一定是奇数。
(t)17 在二叉树的中序遍历序列中,任意一个结点均处在其左孩子结点的后面。
(t)18 假设B是一棵树,B′是对应的二叉树。
则B的后根遍历相当于B′的后序遍历。
(f)19. 通常,二叉树的第i层上有2i-1个结点。
(f)20. 中序线索二叉树的优点是便于在中序下查找直接前驱结点和直接后继结点。
(t)21 二叉树的先序遍历序列中,任意一个结点均处在其孩子结点的前面。
(t)22 由树结点的先根序列和后根序列可以唯一地确定一棵树。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目:数据结构上机报告学院:电子工程学院专业:信息对抗技术学生姓名:***学号:***********西安电子科技大学数据结构课程实验报告实验名称线性表电子工程学院 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.单链表逆置:顺序表逆置:2.分解单链表五、实验总结线性表和单链表是最简单的、最常用的数据结构类型,是实现其他数据结构的基础,熟悉对它们的操作有助于后面对数据结构课程的学习和理解。
附录:单链表逆置代码如下://单链表逆置主文件.cpp#include<iostream.h>#include<stdio.h>#include"单链表结构类型定义.h"#include"建立单链表.h"#include"输出单链表.h"#include"单链表逆置.h"void main(){linklist*head;creat(head);print(head);invert(head);//调用单链表逆置的函数print(head);}//单链表结构类型定义.htypedef char datatype;typedef struct node{datatype data;struct node *next;}linklist;//建立单链表.hvoid creat(linklist*&head)//采用尾插法建立具有结点的单链表{char ch;linklist *s,*r;head=new linklist;r=head;while((ch=getchar())!='*'){s=new linklist;s->data=ch;r->next=s;r=s;}r->next=NULL;}//输出单链表.hvoid print(linklist *head){linklist*p=head->next;while(p!=NULL){cout<<p->data<<" ";p=p->next;}cout<<endl;}//单链表逆置.hvoid invert(linklist*head){linklist*p,*q,*r;p=head->next;q=p->next;while(q!=NULL){r=q->next;q->next=p;p=q;q=r;}head->next->next=NULL;head->next=p;}顺序表逆置代码如下://顺序表逆置主文件.cpp#include<iostream.h>#include<stdio.h>#include"顺序表结构类型定义.h" #include"建立顺序表.h"#include"输出顺序表.h"#include"顺序表逆置.h"void main(){sequenlist*L;creat(L);print(L);invert(L);//调用顺序表逆值的函数 print(L);}//顺序表的结构类型定义.htypedef char datatype;const int maxsize=1024;typedef struct{ datatype data[maxsize];int last;}sequenlist;//建立顺序表.hvoid creat(sequenlist*&L){L=new sequenlist;L->last=0;char ch;while((ch=getchar())!='*'){L->data[L->last]=ch;L->last++;}}//输出顺序表.hvoid print(sequenlist*L){for(int i=0;i<L->last;i++)cout<<L->data[i]<<" ";cout<<endl;}//顺序表逆置.hvoid invert(sequenlist*L){char mid;int i,j;i=0;j=L->last-1;while(i<j){mid=L->data[i];L->data[i]=L->data[j]; L->data[j]=mid;i++;j--;}}西安电子科技大学数据结构课程实验报告实验名称栈和队列电子工程学院 1402031 班Array姓名甘佳霖学号 14020310092同作者实验日期 2017 年 4 月 11 日实验二栈和队列一、实验目的1.熟悉栈和队列的顺序和链式存储结构2.掌握栈和队列的基本运算3.能够利用栈和队列的基本运算完成栈和队列应用的运算二、实验要求1.假设以数组sequ[m]存放循环队列的元素,同时设变量rear和quelen分别指示循环队列中队尾元素的位置和内含元素的个数。
编写实现该循环队列的入队和出队操作的算法。
提示:队空的条件:sq->quelen==0;队满的条件:sq->quelen==m。
2.设单链表中存放有n个字符,试编写算法,判断该字符串是否有中心对称的关系,例如xyzzyx是中心对称的字符串。
(提示:将单链表中的一半字符先依次进栈,然后依次出栈与单链表中的另一半字符进行比较。
)三、设计思路1.队列是一个先进先出的线性表,入队时,先判断队列是否已满,如果不满将元素插入到队尾,然后判断rear是否指向sequ[m],如果是,指向队尾指针rear+1,否者rear=sequ[0],队列内元素个数quelen+1。
出队时头指针front后移一位,如果front=sequ[m],front指向sequ[0],否则front++,quelen-1,从而实现入队与出队的操作。
2.要判断字符串是否中心对称,首先获取栈的长度N,将前N/2个元素(N为偶数)或前(N-1)/2个元素(N为奇数)顺序压入栈中,然后依次出栈(先进后出),与另一半元素依次对应比较,全为真则可判断字符串中心对称。
四、运行结果1.循环队列入队出队2.判断字符串中心对称五、实验总结通过这次实验,我掌握了栈和队列的基本原理,了解了对于栈和队列的操作,让我对栈和队列的知识有了更多的了解。
附录:1.循环队列入队出队代码//循环队列入队出队的主程序文件.cpp#include<iostream.h>#include<stdio.h>#include<stdlib.h>#include"循环队列的结构类型定义.h"#include"置空队.h"#include"入队.h"#include"出队.h"void main(){ qu *sq;datatype x, *p;int key;sq=new qu;setnull(sq);do{ cout<<"1.Enter Queue 2.Delete Queue -1.Quit:";cin>>key;switch(key){ case 1: cout<<"Enter the Data:"; cin>>x;enqueue(sq,x);break;case 2: p=dequeue(sq);if(p!=NULL) cout<<*p<<endl;break;case -1: exit(0);}}while(1);}//出队.hdatatype *dequeue(qu *sq){datatype *temp;if(sq->quelen==0){printf("队列为空,请先进行入队操作\n");return 0;}else{temp=(datatype*)malloc(sizeof(datatype)); sq->quelen--;*temp=sq->sequ[(sq->rear-sq->quelen+m)%m];cout<<"出队成功!\n";return (temp);}}//入队.hvoidenqueue(qu *sq, datatype x){if(sq->quelen==m)printf("队列已满,请先进行出队操作\n");else {sq->quelen++;sq->rear=(sq->rear+1)%m;sq->sequ[sq->rear]=x;cout<<"入队成功!\n";}}//循环队列的结构类型定义.hconstint m=5;typedefint datatype;typedefstruct{ datatypesequ[m];int rear, quelen;}qu;//置空队.hvoidsetnull(qu *sq){ sq->rear=m-1;sq->quelen=0;}2.判断字符串中心对称代码//判字符串中心对称的主程序文件.cpp#include<iostream.h>#include"单链表顺序栈结构类型定义.h"#include"置栈空.h"#include"求单链表长度.h"#include"输出单链表.h"#include"建立单链表.h"#include"顺序栈入栈.h"#include"顺序栈出栈.h"#include"判字符串是否中心对称.h"void main(){linklist *head;stack *s;datatypestr[80];cin>>str;creat(head,str);printlink(head);setnull(s);if(symmetry(head,s)) cout<<"字符串\""<<str<<"\"中心对称\n";else cout<<"字符串\""<<str<<"\"不是中心对称\n";}//定义单链表结构类型.htypedef char datatype;typedefstruct node{ datatype data;struct node *next;}linklist;//定义顺序栈结构类型constintmaxsize=40;typedefstruct{ datatype elements[maxsize];int top;}stack;//建立具有头结点的单链表.hvoidcreat(linklist *&head,datatype*str) { datatype *p=str;linklist *s,*r;head=new linklist;r=head;while(*p!='\0'){s=new linklist;s->data=*p;r->next=s;r=s;p++;}r->next=NULL;}//判断字符是否中心对称.hint symmetry(linklist*head,stack*s){int n=length(head)/2;linklist*p=head->next;datatype x;for(inti=0;i<n;i++){push(s,p->data);p=p->next;}if(length(head)%2==1)p=p->next;while(p!=NULL){x=pop(s);if(x==p->data)p=p->next;else return 0;}return 1;}//求单链表长度.hint length(linklist*head){ linklist *p=head->next;int n=0;while(p!=NULL){ n++; p=p->next; } return n;}//输出单链表.hvoidprintlink(linklist*head){ linklist *p=head->next;while(p!=NULL){ cout<<p->data;p=p->next;}cout<<endl;}//顺序栈出栈.hdatatype pop(stack*s){datatype temp;s->top--;temp=s->elements[s->top+1];return temp;}//顺序栈入栈.hvoid push(stack*s,datatype e){s->top++;s->elements[s->top]=e;}//置栈空.hvoidsetnull(stack *&s){s=new stack;s->top=-1;}西安电子科技大学数据结构课程实验报告实验名称数组电子工程学院 1402031 班Array姓名甘佳霖学号 14020310092同作者实验日期 2017 年 5 月 6 日实验三数组一、实验目的1.熟悉数组的结构2.掌握矩阵的进行运算二、实验要求若在矩阵A m×n中存在一个元素A[i-1[j-1],其满足A[i-1[j-1]是第i行元素中最小值,且又是第j列元素中最大值,则称此元素为该矩阵的一个马鞍点。