文档库 最新最全的文档下载
当前位置:文档库 › 桂林电子科技大学910数据结构2015--2017考研专业课真题

桂林电子科技大学910数据结构2015--2017考研专业课真题

桂林电子科技大学910数据结构2015--2017考研专业课真题

桂电智能仪器实验代码(最新lab8000平台汇编)知识讲解

桂电智能仪器实验代码(最新l a b8000平 台汇编)

实验1 ORG 0000H AJMP MAIN ORG 0200H BUFF EQU 60H MAIN:MOV R3,#00H MOV R4,#00H ACALL DISPLAY ACALL KEXAM JZ MAIN ACALL D10ms ACALL KEXAM JZ MAIN MOV R2,#0DFH MOV DPTR,#8004H MOV A,#00H MOVX @DPTR,A KEY1:MOV DPTR,#8002H MOV A,R2 MOVX @DPTR,A MOV DPTR,#8001H MOVX A,@DPTR CPL A ANL A,#0FH JNZ KEY2 MOV A,R3 ADD A,#04H MOV R3,A MOV A,R2 RR A MOV R2,A JB ACC.0,KEY1 AJMP MAIN KEY2:CPL A KEY3:RRC A JNC KEY4 INC R4 AJMP KEY3 KEY4:ACALL DISPLAY ACALL D10ms ACALL KEXAM JNZ KEY4

MOV A,R3 ADD A,R4 MOV BUFF,A KEND:AJMP MAIN KEXAM:MOV DPTR,#8002H MOV A,#00H MOVX @DPTR,A MOV DPTR,#8001H MOVX A,@DPTR CPL A ANL A,#0FH RET DISPLAY:MOV DPTR,#TAB MOV A,60H MOVC A,@A+DPTR MOV DPTR,#8004H MOVX @DPTR,A MOV DPTR,#8002H MOV A,#10H MOVX @DPTR,A RET D10ms:MOV R5,#30H DL:MOV R6,#0FFH DL0:DJNZ R6,DL0 DJNZ R5,DL RET TAB:DB 3FH 06H 66H 07H DB 71H 5BH 6DH 7FH DB 79H 4FH 7DH 6FH DB 5EH 39H 7CH 77H 实验2 ORG 0000H AJMP MAIN ORG 0100H MAIN: ACALL KEXAM ;检查按键 JZ MAIN ;无继续 ACALL D10ms ;延时去抖

数据结构实验报告

数据结构实验报告 一.题目要求 1)编程实现二叉排序树,包括生成、插入,删除; 2)对二叉排序树进行先根、中根、和后根非递归遍历; 3)每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来。 4)分别用二叉排序树和数组去存储一个班(50人以上)的成员信息(至少包括学号、姓名、成绩3项),对比查找效率,并说明在什么情况下二叉排序树效率高,为什么? 二.解决方案 对于前三个题目要求,我们用一个程序实现代码如下 #include #include #include #include "Stack.h"//栈的头文件,没有用上 typedefintElemType; //数据类型 typedefint Status; //返回值类型 //定义二叉树结构 typedefstructBiTNode{ ElemType data; //数据域 structBiTNode *lChild, *rChild;//左右子树域 }BiTNode, *BiTree; intInsertBST(BiTree&T,int key){//插入二叉树函数 if(T==NULL) { T = (BiTree)malloc(sizeof(BiTNode)); T->data=key; T->lChild=T->rChild=NULL; return 1; } else if(keydata){ InsertBST(T->lChild,key); } else if(key>T->data){ InsertBST(T->rChild,key); } else return 0; } BiTreeCreateBST(int a[],int n){//创建二叉树函数 BiTreebst=NULL; inti=0; while(i

数据结构实验报告全集

数据结构实验报告全集 实验一线性表基本操作和简单程序 1.实验目的 (1)掌握使用Visual C++ 6.0上机调试程序的基本方法; (2)掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)认真阅读和掌握本章相关内容的程序。 (3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 (5)按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include iostream.h>//头文件 #include//库头文件-----动态分配内存空间 typedef int elemtype;//定义数据域的类型 typedef struct linknode//定义结点类型 { elemtype data;//定义数据域 struct linknode *next;//定义结点指针 }nodetype; 2)创建单链表

nodetype *create()//建立单链表,由用户输入各结点data域之值,//以0表示输入结束 { elemtype d;//定义数据元素d nodetype *h=NULL,*s,*t;//定义结点指针 int i=1; cout<<"建立一个单链表"<> d; if(d==0) break;//以0表示输入结束 if(i==1)//建立第一个结点 { h=(nodetype*)malloc(sizeof(nodetype));//表示指针h h->data=d;h->next=NULL;t=h;//h是头指针 } else//建立其余结点 { s=(nodetype*) malloc(sizeof(nodetype)); s->data=d;s->next=NULL;t->next=s; t=s;//t始终指向生成的单链表的最后一个节点

数据结构实验报告

数据结构实验报告——实验4 学号::得分:______________ 一、实验目的 1、复习线性表的逻辑结构、存储结构及基本操作; 2、掌握顺序表和(带头结点)单链表; 3、了解有序表。 二、实验容 1、(必做题)假设有序表中数据元素类型是整型,请采用顺序表或(带头结点)单链表实现: (1)OrderInsert(&L, e, int (*compare)(a, b)) //根据有序判定函数compare,在有序表L的适当位置插入元素e; (2)OrderInput(&L, int (*compare)(a, b)) //根据有序判定函数compare,并利用有序插入函数OrderInsert,构造有序表L; (3)OrderMerge(&La, &Lb, &Lc, int (*compare)()) //根据有序判定函数compare,将两个有序表La和Lb归并为一个有序表Lc。 2、(必做题)请实现: (1)升幂多项式的构造,升幂多项式是指多项式的各项按指数升序有序,约定系数不能等于0,指数不能小于0; (2)两个升幂多项式的相加。 三、算法描述 (采用自然语言描述) 1. 创建带头节点的链表, 输入两个有序表数据La Lb 归并两个有序表得有序表Lc 输出三个有序表 输入需插入数据e 将e插入有序表Lc 输出插入e后的Lc 2. 创建链表 按指数升序输入多项式得序数和指数 输出多项式 按指数升序输入第二个多项式得序数和指数 两个多项式相加 输出第二个多项式和两个多项式得和

四、详细设计 (画出程序流程图)1. 2.

五、程序代码 (给出必要注释) 1. #include #include typedef struct LNode { int date; struct LNode *next; } LNode,*Link; typedef struct LinkList { Link head;//头结点 int lenth;//链表中数据元素的个数 } LinkList; int compare (LinkList *L,int e)//有序判定函数compare { int Lc=0; Link p; p=L->head;

数据结构实验报告范例

《数据结构与算法》实验报告 专业班级姓名学号 实验项目 实验一二叉树的应用 实验目的 1、进一步掌握指针变量的含义及应用。 2、掌握二叉树的结构特征,以及各种存储结构的特点及使用范围。 3、掌握用指针类型描述、访问和处理二叉树的运算。 实验内容 题目1:编写一个程序,采用一棵二叉树表示一个家谱关系。要求程序具有如下功能:(1)用括号表示法输出家谱二叉树, (2)查找某人的所有儿子, (3)查找某人的所有祖先。 算法设计分析 (一)数据结构的定义 为了能够用二叉树表示配偶、子女、兄弟三种关系,特采用以下存储关系,则能在二叉树上实现家谱的各项运算。 二叉树型存储结构定义为: typedef struct SNODE {char name[MAX]; //人名 struct SNODE *left; //指向配偶结点 struct SNODE *right; //指向兄弟或子女结点 }FNODE; (二)总体设计 实验由主函数、家谱建立函数、家谱输出函数、儿子查找函数、祖先查找函数、结点定位函数、选择界面函数七个函数共同组成。其功能描述如下: (1)主函数:统筹调用各个函数以实现相应功能 void main() (2)家谱建立函数:与用户交互建立家族成员对应关系 void InitialFamily(FNODE *&head) //家谱建立函数 (3)家谱输出函数:用括号表示法输出家谱 输出形式为:父和母(子1和子妻1(孙1),子2和子妻2(孙2)) void PrintFamily(FNODE *head) //家谱输出函数

(4)儿子查找函数:在家谱中查找到某人所有的子女并输出,同时也能辨别出其是否为家族成员与是否有子女 void FindSon(FNODE *b,char p[]) //儿子查找函数 (5)祖先查找函数:在家谱中查找到某人所有的祖先并输出,同时也能辨别出其是否为家族中成员。 int FindAncestor(FNODE *head,char son[ ]) //祖先查找函数 (6)结点定位函数:在家谱中找到用户输入人名所对应的结点。 FNODE *findnode(FNODE *b,char p[]) //结点定位函数 (7)选择界面函数:为便于编写程序,将用户选择部分独立为此函数。 void PRINT(int &n) (三)各函数的详细设计: void InitialFamily(FNODE *&head) //家谱建立函数 1:首先建立当前人的信息,将其左右结点置为空, 2:然后让用户确定其是否有配偶,如果没有配偶,则当前程序结束, 3:如果有则建立其配偶信息,并将配偶结点赋给当前人的左结点; 4:再让用户确定其是否有子女,如果有则递归调用家谱建立函数建立子女结点,并将其赋给配偶结点的下一个右结点。 5:如无,则程序结束 void PrintFamily(FNODE *head) //家谱输出函数 1:首先判断当前结点是否为空,如果为空则结束程序; 2:如果不为空,则输出当前结点信息, 3:然后判断其左结点(配偶结点)是否为空,如不为空则输出“和配偶信息。 4:再判断配偶结点的右结点是否为空,如不为空则递归调用输出其子女信息,最后输出“)”; 5:当配偶结点为空时,则判断其右结点(兄弟结点)是否为空 6:如果不为空,则输出“,”,并递归调用输出兄弟信息 7程序结束 FNODE *findnode(FNODE *b,char p[]) //结点定位函数 1:当前结点是否为空,为空则返回空; 2:如果和查找信息相同,则返回当前结点; 3:如不然,则先后递归访问其左结点,再不是则递归访问右结点 void FindSon(FNODE *b,char p[]) //儿子查找函数 1:在家谱中定位到要查找的结点,如无则输出“查找不到此人” 2:判断其配偶结点与子女结点是否为空,为空则输出“无子女” 3:不为空则输出其配偶结点的所有右结点(子女结点)。 int FindAncestor(FNODE *head,char son[ ]) //祖先查找函数 1:先在家谱中定位到要查找的结点,如为空输出“不存在此人”,程序结束 2:先将父母结点入栈,当栈为空时程序结束, 3:栈不为空时,判断栈顶元素是否已访问过, 4:访问过,再判断是否为查找结点,如是则输出栈中保存的其祖先结点,并滤过其兄弟结点不输出;不是查找结点,则退栈一个元素 5:未访问过,则取当前栈顶元素,置访问标志——1,同时取其右结点 6:栈不为空或当前所取结点不为空时,转到2; 实验测试结果及结果分析

数据结构实验报告图实验

邻接矩阵的实现 1. 实验目的 (1)掌握图的逻辑结构 (2)掌握图的邻接矩阵的存储结构 (3)验证图的邻接矩阵存储及其遍历操作的实现2. 实验内容 (1)建立无向图的邻接矩阵存储 (2)进行深度优先遍历 (3)进行广度优先遍历3.设计与编码MGraph.h #ifndef MGraph_H #define MGraph_H const int MaxSize = 10; template class MGraph { public: MGraph(DataType a[], int n, int e); ~MGraph(){ void DFSTraverse(int v); void BFSTraverse(int v); private: DataType vertex[MaxSize]; int arc[MaxSize][MaxSize]; }

int vertexNum, arcNum; }; #endif MGraph.cpp #include using namespace std; #include "MGraph.h" extern int visited[MaxSize]; template MGraph::MGraph(DataType a[], int n, int e) { int i, j, k; vertexNum = n, arcNum = e; for(i = 0; i < vertexNum; i++) vertex[i] = a[i]; for(i = 0;i < vertexNum; i++) for(j = 0; j < vertexNum; j++) arc[i][j] = 0; for(k = 0; k < arcNum; k++) { cout << "Please enter two vertexs number of edge: " cin >> i >> j; arc[i][j] = 1; arc[j][i] = 1; } }

数据结构实验报告

《用哈夫曼编码实现文件压缩》 实验报告 课程名称数据结构 实验学期2015至2016学年第一学期 学生所在系部计算机学院 年级2014专业班级物联B142班 学生姓名杨文铎学号201407054201 任课教师白磊 实验成绩

用哈夫曼编码实现文件压缩 1、了解文件的概念。 2、掌握线性表的插入、删除的算法。 3、掌握Huffman树的概念及构造方法。 4、掌握二叉树的存储结构及遍历算法。 5、利用Haffman树及Haffman编码,掌握实现文件压缩的一般原理。 微型计算机、Windows系列操作系统、Visual C++6.0软件 根据ascii码文件中各ascii字符出现的频率情况创建Haffman树,再将各字符对应的哈夫曼编码写入文件中,实现文件压缩。 本次实验采用将字符用长度尽可能短的二进制数位表示的方法,即对于文件中出现的字符,无须全部都用S为的ascii码进行存储,根据他们在文件中出现的频率不同,我们利用Haffman算法使每个字符能以最短的二进制数字符进行存储,已达到节省存储空间,压缩文件的目的,解决了压缩需要采用的算法,程序的思路已然清晰: 1、统计需压缩文件中的每个字符出现的频率 2、将每个字符的出现频率作为叶子节点构建Haffman树,然后将树中结点引向 其左孩子的分支标“0”,引向其右孩子的分支标“1”;每个字符的编码 即为从根到每个叶子的路径上得到的0、1序列,这样便完成了Haffman 编码,将每个字符用最短的二进制字符表示。 3、打开需压缩文件,再将需压缩文件中的每个ascii码对应的haffman编码按bit 单位输出。 4、文件压缩结束。 (1)构造haffman树的方法一haffman算法 构造haffman树步骤: I.根据给定的n个权值{w1,w2,w3…….wn},构造n棵只有根结点的二叉 树,令起权值为wj。 II.在森林中选取两棵根结点权值最小的树作左右子树,构造一棵新的二叉树,置新二叉树根结点权值为其左右子树根结点权值之和。 III.在森林中删除这两棵树,同时将得到的二叉树加入森林中。 IV.重复上述两步,知道只含一棵树为止,这棵树即哈夫曼树。 对于haffman的创建算法,有以下几点说明: a)这里的Haffman树采用的是基于数组的带左右儿子结点及父结点下标作为

数据结构实验一 实验报告

班级: 姓名: 学号: 实验一线性表的基本操作 一、实验目的 1、掌握线性表的定义; 2、掌握线性表的基本操作,如建立、查找、插入与删除等。 二、实验内容 定义一个包含学生信息(学号,姓名,成绩)的顺序表与链表(二选一),使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息; (2) 逐个显示学生表中所有学生的相关信息; (3) 根据姓名进行查找,返回此学生的学号与成绩; (4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩); (5) 给定一个学生信息,插入到表中指定的位置; (6) 删除指定位置的学生记录; (7) 统计表中学生个数。 三、实验环境 Visual C++ 四、程序分析与实验结果 #include #include #include #include #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int Status; // 定义函数返回值类型 typedef struct

{ char num[10]; // 学号 char name[20]; // 姓名 double grade; // 成绩 }student; typedef student ElemType; typedef struct LNode { ElemType data; // 数据域 struct LNode *next; //指针域 }LNode,*LinkList; Status InitList(LinkList &L) // 构造空链表L { L=(struct LNode*)malloc(sizeof(struct LNode)); L->next=NULL; return OK; } Status GetElem(LinkList L,int i,ElemType &e) // 访问链表,找到i位置的数据域,返回给 e { LinkList p; p=L->next;

数据结构实验报告

本科实验报告 课程名称:数据结构(C语言版) 实验项目:线性表、树、图、查找、内排序实验地点:明向校区实验楼208 专业班级:学号: 学生姓名: 指导教师:杨永强 2019 年 1 月10日

#include #include #include #define OK 1 typedef struct{//项的表示,多项式的项作为LinkList的数据元素float coef;//系数 int expn;//指数 }term,ElemType; typedef struct LNode{ //单链表节点结构 ElemType data; struct LNode *next; }LNode, *LinkList; typedef LinkList polynomial; int CreatLinkList(polynomial &P,int n){ //创建多项式P = (polynomial)malloc(sizeof(LNode)); polynomial q=P; q->next=NULL; polynomial s; for(int i = 0; i < n; i++){ s = (polynomial)malloc(sizeof(LNode)); scanf("%f%d",&(s->data.coef),&(s->data.expn)); q->next = s; s->next = NULL; q=q->next; } return OK; } 运行结果 2. void PrintfPolyn(polynomial P){ polynomial q; for(q=P->next;q;q=q->next){ if(q->data.coef!=1) printf("%g",q->data.coef);

数据结构实验报告全集

数据结构实验报告全集

数据结构实验报告全集 实验一线性表基本操作和简单程序 1.实验目的 (1)掌握使用Visual C++ 6.0上机调试程序的基本方法; (2)掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)认真阅读和掌握本章相关内容的程序。(3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 (5)按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include iostream.h>//头文件

#include//库头文件-----动态分配内存空间 typedef int elemtype;//定义数据域的类型 typedef struct linknode//定义结点类型 { elemtype data;//定义数据域 struct linknode *next;//定义结点指针 }nodetype; 2)创建单链表 nodetype *create()//建立单链表,由用户输入各结点data域之值, //以0表示输入结束

{ elemtype d;//定义数据元素d nodetype *h=NULL,*s,*t;//定义结点指针 int i=1; cout<<"建立一个单链表"<> d; if(d==0) break;//以0表示输入结束

数据结构实验报告

华南农业大学信息学院 综合性、设计性实验 起止日期:2011秋 学院软件学院专业班级10软件工程7班学号20103100070 4 姓名黄定康 实 验 题 目 实现平衡二叉排序树的各种算法 自我评价 项目算法设计独立完成情况算法熟练程度测试 通过 成功失败独立帮助掌握了解不懂 插入新结点√√√√ 前序、中序、后序遍历二叉树 (递归) √√√√ 前序、中序、后序遍历的非递 归算法 √√√√ 层次遍历二叉树√√√√ 在二叉树中查找给定关键字√√√√ 交换各结点的左右子树√√√√ 求二叉树的深度√√√√ 叶子结点数√√√√ 删除某结点√√√√ ●A---------完成实验要求的全部功能并运行通过,算法有一定的新意,程序代码 符合书写规范,实验报告叙述清晰完整,有详尽的分析和总结。 ●B---------完成实验要求的全部功能,程序代码符合书写规范,实验报告叙述 清晰完整。 ●C---------完成实验要求的大部分功能,实验报告良好。 ●D---------未按时完成实验,或者抄袭。 成 绩 教师签名:杨秋妹

实验报告 题目:实现平衡二叉排序树的各种算法 班级:10软件工程7班 姓名:黄定康 学号:201031000704 完成日期:2011/12/07 (一)分析题目要求 (1)函数说明 void R_rotate(ptr& t) -右旋转函数,从T开始做右旋转 int coutdeep(ptr t)-计算深度函数 void L_rotate(ptr& t)-左旋转函数 void leftbalance(ptr&t)-左平衡函数,从T开始做左平衡处理 void rightbalance(ptr&t)-右平衡函数 int insertA VL(ptr& t,int e,int & taller)-插入结点函数 void preorder(ptr t)-(递归)先序遍历 void preorder_2(ptr t)-(非递归)先序遍历 void inorder(ptr t)-(递归)中序遍历 void inorder_2(ptr t)-(非递归)中序遍历 void posorder(ptr t)-(递归)后序遍历 void posorder_2(ptr t)-(非递归)后序遍历 void dfs(ptr t,int type)-(递归)深度优先遍历(包含中序先序后续) void dfs_2(ptr t,int type)-(递归) 深度优先遍历 int bfs(ptr t)-层次便利 int delete_node(ptr& t,int&shorter,int temp);-删除结点函数 int Delete(ptr& t,int shorter)-删除结点函数 int transfer(ptr&t)-左右子树交换函数 int countleaf(ptr t)-计算叶节点 int checkup(ptr t,int temp)- 从树t中查找temp是否存在,存在返回1否则返回0 int main()-主函数 void show_menu(ptr t)-简单的菜单函数 (2)输入形式及输入值范围 输入形式:当树没创建时,先在第一行输入树的节点数目n,第二行再输入n个大于0的不重复整数,以空格隔开。删除结点时,直接输入要删除结点的值。 输入范围:所有int类型的大于零的值,注意不能重复输入。

桂电智能仪器实验代码lab8000平台汇编

实验1 ORG 0000H AJMP MAIN ORG 0200H BUFF EQU 60H MAIN:MOV R3,#00H MOV R4,#00H ACALL DISPLAY ACALL KEXAM JZ MAIN ACALL D10ms ACALL KEXAM JZ MAIN MOV R2,#0DFH MOV DPTR,#8004H MOV A,#00H MOVX @DPTR,A KEY1:MOV DPTR,#8002H MOV A,R2 MOVX @DPTR,A MOV DPTR,#8001H MOVX A,@DPTR CPL A ANL A,#0FH JNZ KEY2 MOV A,R3 ADD A,#04H MOV R3,A MOV A,R2 RR A MOV R2,A JB ACC.0,KEY1 AJMP MAIN KEY2:CPL A KEY3:RRC A JNC KEY4 INC R4 AJMP KEY3 KEY4:ACALL DISPLAY ACALL D10ms ACALL KEXAM JNZ KEY4 MOV A,R3

ADD A,R4 MOV BUFF,A KEND:AJMP MAIN KEXAM:MOV DPTR,#8002H MOV A,#00H MOVX @DPTR,A MOV DPTR,#8001H MOVX A,@DPTR CPL A ANL A,#0FH RET DISPLAY:MOV DPTR,#TAB MOV A,60H MOVC A,@A+DPTR MOV DPTR,#8004H MOVX @DPTR,A MOV DPTR,#8002H MOV A,#10H MOVX @DPTR,A RET D10ms:MOV R5,#30H DL:MOV R6,#0FFH DL0:DJNZ R6,DL0 DJNZ R5,DL RET TAB:DB 3FH 06H 66H 07H DB 71H 5BH 6DH 7FH DB 79H 4FH 7DH 6FH DB 5EH 39H 7CH 77H 实验2 ORG 0000H AJMP MAIN ORG 0100H MAIN: ACALL KEXAM ;检查按键 JZ MAIN ;无继续 ACALL D10ms ;延时去抖 ACALL KEXAM JZ MAIN START: MOV DPTR,#8002H ;键值分析及选通道MOV A,#0DFH

数据结构实验报告

《数据结构》实验报告 专业惠普测试 班级142 姓名李斌 学号1408090221 学期 3 指导老师刘勇

成绩: 教师评语: 数据结构上机实验报告 学号:1408090221 姓名:李斌所在系:惠普测试班级:142 实验名称:线性结构基本算法的实现实验日期 实验指导教师刘勇实验机房 ------------------------------------------------------------------------------------------------------

1.实验目的: (1)掌握线性表顺序存储结构的基本操作:插入、删除、查找; (2)掌握线性表链式结构的基本操作:插入、删除、合并等运算; (3)掌握栈和队列基本运算的算法; (4)掌握稀疏矩阵的压缩存储的算法。 2. 实验内容: (1)实现顺序表的创建、插入、删除和查找的操作; (2)实现单链表插入、删除、合并的操作; (3)实现2个有序线性表的合并; (4)利用顺序栈实现括号匹配的算法; (5)实现顺序队列各种基本运算的算法; (6)实现链栈各种基本运算的算法;(选做) (7)实现链队列各种基本运算的算法;(选做) (8)实现稀疏矩阵压缩存储的算法。 3.算法设计(编程思路或流程图或源代码) 内容: 1、顺序表的插入和删除 2、有序单链表的合并 3、数制转换的算法实现 1. //顺序表的插入和删除 #include //#include #include #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 #define TURE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1

桂电算法及数据结构课设学生成绩管理系统课程设计报告

编号: 数据结构与算法课程设计 说明书 题目:学生成绩管理系统 学院:计算机科学与工程学院 专业:计算机科学与技术 学生姓名: 学号: 指导教师: 2013年9 月28 日

目录 引言 (2) 1 系统概述 (3) 2 需求分析 (3) 2.1 系统需求 (3) 2.2 开发环境 (4) 3 详细设计 (5) 4 所遇到的问题和分析解决 (14) 5 系统特殊与关键技术 (15) 6 总结心得 (15) 7 参考文献……………………………………………………………附录……………………………………………………………………

引言 通过本课程设计,使自己更加系统地理解和掌握数据结构的基本概念;能自如地根据实际要求,设计相应的数据结构,并运用C或C++语言实现所设计的算法,编写较大型的程序,分析和解决实际应用问题,进一步加深、巩固所学专业课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。掌握C语言或C++语言独立的编写、调试应用程序和进行其它相关设计的技能。 此项目主要是考察我们对结构体、数组、文件等具体操作,以及对C语言语法的掌握,所以做成此项目要求比较高的设计要求,对整体有很熟悉的概括,同时调试过程也是很重要的,对程序界面的要求也比较高,要设计的合理同时也要美观一点,能够人性化的描述清楚你的各个功能,一目了然,对其他用户使用本程序简单易懂,这才能成本程序或本系统是成功的。 对于学生成绩管理系统,此项目每年都有学生去做,但是能够在其他项目中脱颖而出,还要有自己的设计特色,用简单的语言详细描述系统的功能,这才是关键。 这个设计能够练习我们的理解和运用结构化程序设计的思想和法,掌握开发一个小型实用系统的基本法,学会调试一个比较长的程序的基本法,同时掌握书写程序设计开发文档的能力。

数据结构实验一 实验报告

班级:姓名:学号: 实验一线性表的基本操作 一、实验目的 1、掌握线性表的定义; 2、掌握线性表的基本操作,如建立、查找、插入和删除等。 二、实验内容 定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表(二选一),使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息; (2) 逐个显示学生表中所有学生的相关信息; (3) 根据姓名进行查找,返回此学生的学号和成绩; (4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩); (5) 给定一个学生信息,插入到表中指定的位置; (6) 删除指定位置的学生记录; (7) 统计表中学生个数。 三、实验环境 Visual C++ 四、程序分析与实验结果 #include #include #include #include #define OK 1 #define ERROR 0 #define OVERFLOW -2

typedef int Status; // 定义函数返回值类型 typedef struct { char num[10]; // 学号 char name[20]; // 姓名 double grade; // 成绩 }student; typedef student ElemType; typedef struct LNode { ElemType data; // 数据域 struct LNode *next; //指针域 }LNode,*LinkList; Status InitList(LinkList &L) // 构造空链表L { L=(struct LNode*)malloc(sizeof(struct LNode)); L->next=NULL;

数据结构实验报告

数据结构 课程设计报告 设计题目:哈希表存储的电话号码查询 专业计算机科学与技术 班级__15512002___________ 学生___蔺杰_______________ 学号__1551200204__________ 指导教师__王小琼_____________ 起止时间17--18周 桂林电子科技大学 信息科技学院 2017年下学期

目录 一.设计要求-----------------------------------------------------------------1 二.数据结构选择与概要设计 (1) 数据结构选择-------------------------------------------------------2 (2) 流程图---------------------------------------------------------------2 以号码为关键字哈希流程--------------------------------3 号码查询流程图---------------------------------------------4 三.设计算 (1) 建立节点------------------------------------------------------------5 (2) 哈希函数的定义--------------------------------------------------5 (3) 哈希查找------------------------------------------------------------6 四.测试结果 (1) 操作说明------------------------------------------------------------7 (2)截图-------------------------------------------------------------------7 五.程序源代码及实验心得 (1) 源代码-----------------------------------------------------------7-10 (2) 实验心得-----------------------------------------------------------11

数据结构实验报告

实验报告五查找(学科:数据结构) 姓名单位班级学号实验日期成绩评定教师签名批改日期 实验名称:实验五查找 折半查找 【问题描述】 某班学生成绩信息表中,每个学生的记录已按平均成绩由高到低排好序,后来发现某个学生的成绩没有登记到信息表中,使用折半查找法把该同学的记录插入到信息表中,使信息表中的记录仍按平均成绩有序。 【基本信息】 (1)建立现有学生信息表,平均成绩已有序。 (2)输入插入学生的记录信息。 (3)用折半查找找到插入位置,并插入记录。 【测试数据】 自行设计。 【实验提示】 (1)用结构数组存储成绩信息表。 (2)对记录中的平均成绩进行折半查找。 【实验报告内容】 设计程序代码如下: #include<> #include<> #define N 5 struct student{ char name[10]; float avg; } void insort(struct student s[],int n) { int low,hight,mid,k; char y[10]; float x;

low=1; hight=n; strcpy(y,s[0].name ); x=s[0].avg ; while(low<=hight) { mid=(low+hight)/2; if(x>s[mid].avg ) hight=mid-1; else low=mid+1; } for(k=0;k

2017年广西桂林电子科技大学数据结构考研真题A卷

2017年广西桂林电子科技大学数据结构考研真题A 卷 一、 选择题(20分,共10小题,每小题2分) 1. 设数据结构B=,其中K={a ,b ,c ,d},R={, },则B 是( )。 A .线性结构 B .树型结构 C .图型结构 D .索引结构 2. 若线性表最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则下面最适合的存储结构是( )。 A .带头指针的单链表 B .带头指针的双链表 C .带头指针的单循环链表 D .带尾指针的单循环链表 3.图1中,(a )是结点结构,(b )是双向链表片段,若要删除(b )中p 指针指向结点的后继结点,则正确的操作是( )。 图1 双向链表 A .p->rlink->data=p->data; p->llink->rlink=p->rlink; p->rlink->llink=p->llink; free(p); B .p->rlink->data=p->data; p->rlink=p->rlink->llink; p->rlink->rlink->llink=p; free(p); C .p->rlink=p->rlink->llink; p->rlink->rlink->llink=p; free(p->rlink); D .p->rlink->rlink->llink=p; p->rlink=p->rlink->llink; free(p->rlink); 4. 设栈S 和队列Q 的初始状态为空,元素a ,b ,c ,d ,e ,f 依次进栈,一个元素出栈后即进入队列Q 。如果6个元素出队列的顺序是b ,d ,c ,f ,e ,a ,则栈S 的容量至少应该是( )。 A .2 B .3 C .4 D .5 5.给定有序表{ 16,23,32,45,51,62,73,79,80 },若采用二分检索法查找关键码值为62的数据元素,( )次比较后查找成功。 A .1 B .2 C .3 D . 4 a b c llink rlink data p (a ) (b )c

2018年桂林电子科技大学823数据结构+操作系统考研真题试题试卷

目录 2018年桂林电子科技大学823数据结构+操作系统考研真题试题试卷 (2) 第 1 页,共 6 页

桂林电子科技大学 2018年硕士研究生统一入学考试试题 科目代码:823科目名称:数据结构+操作系统 注意:答案必须全部写在考点提供的答题纸上,写在试题上无效;答案要标注题号,答题纸要填写姓名和考号,并标注页码与总页数;交卷时,将答题纸与试题一起装入原试卷袋,用我校提供的密封条密封并签名。 PartⅠ:数据结构部分 一、单选题(每小题2分,共10小题,合计20分) 1.判定一个队列QU(最多元素为m0)为满队列的条件是 (A)QU->rear-QU->front==m0(B).QU->rear-QU->front-1==m0 (C).QU->front==QU->rear(D).QU->front==QU->rear+1 2.链表是一种采用()存储结构存储的线性表 (A)顺序(B)链式(C)星式(D)网状 3.线性表若采用链式存储结构时,要求内存中可用存储单元的地址: (A)必须是连续的(B)部分地址必须是连续的 (C)一定是不连续的(D)连续或不连续都可以 4.线性表L在()情况下适用于使用链式结构实现。 (A)需经常修改L中的结点值(B)需不断对L进行删除插入 (C)L中含有大量的结点(D)L中结点结构复杂 5.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为() (A)i(B)n=i(C)n-i+1(D)不确定 6.若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则最节省运算时间的存储方式是() (A)单链表(B)双链表(C)仅有头指针的单循环链表 (D)仅有尾指针的单循环链表 7.树中所有结点的度之和等于所有结点数() (A)加0(B)加1(C)减1(D)加n 8在一棵具有n个结点的二叉链表中,所有结点的空域个数等于() (A)n(B)n-1(C)n+1(D)2n 9.某二叉树的先序序列和后序序列正好相反,则该二叉树一定是() (A)空或只有一个结点(B)任一结点无左孩子 (C)高度等于其节点数(D)任一结点无右孩子 第1页共5页 第 2 页,共 6 页