当前位置:文档之家› 计算机软件开发技术C#期末复习(含SQL语句例题)同济大学

计算机软件开发技术C#期末复习(含SQL语句例题)同济大学

一、数据结构1、概念部分1)数据结构的概念及其三要素a.数据结构:描述了一组性质相同的数据元素及元素间的相互关系。

b.基本概念:①数据:描述客观事物的信息集,是程序处理的对象。

①数据元素:是数据集合中的个体,构成数据对象的基本单位。

一个数据元素可由若干个数据项组成。

①数据项:是数据的最小单位。

c.数据结构的三要素:①逻辑结构:数据元素之间的逻辑关系。

②存储结构:数据元素在计算机中的储存方式。

③运算(操作):数据元素定义上的运算集合。

2)数据逻辑结构的基本类型,数据储存表示的基本方法及其特点:a. 数据逻辑结构的基本类型:线性结构:1对1树型结构:1对多图状结构:多对多集合:除了同属一个集合,无其他关系b. 数据储存表示的基本方法:顺序表示:用物理上连续的存储空间,顺序存放逻辑上相邻的数据元素。

(主要用于线性数据结构)主要特点:⒈要求存储在一片连续的地址中。

⒉结点中只有自身信息域,没有连接信息域。

存储密度大,存储空间利用率高。

⒊可以通过计算直接确定数据结构中第i个结点的存储地址。

可以直接对记录进行存取。

即可以对记录直接进行存取;如数组下标⒋插入、删除运算会引起大量节点的移动(效率低)链式表示:储存空间物理上不连续,数据元素之间的关系由指针确定主要特点:⒈结点由两类域组成:数据域和指针域。

储存密度小。

⒉逻辑上相邻的节点物理上不必邻接,既可实现线性数据结构,又可用于表示非线性数据结构。

⒊插入,删除操作灵活方便,不必移动结点,只要改变结点中的指针即可。

⒋程序实现复杂度高。

3)栈、队列等线性结构的基本概念、性质、存储方式及各自的特点(看129页8、9题)栈(Stack)是一种特殊的线性数据结构,其操作被限制在一端,这一端称为栈顶,而另一端称为栈底,具有后进先出的特点。

根据栈中数据元素存储方式的不同,分为顺序存储栈、链式存储栈。

队列(Queue)也是操作受限的线性表,允许在表的一端进行插入,另一端进行删除。

允许插入的一端叫做队尾(tail),允许删除的一端则称队头(head)。

具有先进先出的特点。

根据队列元素数据存储方式的不同,分为顺序存储队列、链式存储队列。

4)二叉树的基本概念、性质、遍历以及由遍历序列构造出二叉树的方法(看129页6、10、12题)a. 定义:二叉树是n(n≥0)个结点的有限集合,且满足以下两条:①或者为空二叉树,即n=0;②或者由一个根结点和两棵互不相交的被称为根的左子树和右子树所组成,左子树和右子树分别又是一棵二叉树。

注意:①二叉树的结点子树要明确指出左子树和右子树,即便结点只有一棵子树。

②二叉树允许为空。

③每个结点最多有两棵子树,故二叉树不存在度大于2的结点。

b. 两种特殊的二叉树:满二叉树:所有分支结点都有左子树和右子树,且所有叶结点都在同一层上。

深度为K的满二叉树有2K-1 个结点。

完全二叉树:一棵深度为K的二叉树,其叶结点都在第K层或第K-1层上(只有最下两层的度小于2),且最下层上的结点都集中在该层最左边的若干位置上。

从满二叉树叶子所在的层次中,自右向左连续删除若干叶子所得到的二叉树就是完全二叉树。

c. 二叉树的性质:一般二叉树的性质性质1 在非空二叉树的第i层,最多有2i-1个结点。

性质2 高度为k的二叉树,结点总数最多为2k-1。

性质3 对任何一棵非空二叉树,若叶结点个数为n0,度为2的结点个数为n2, 则有n0 = n2 + 1。

亦即包含n个结点的二叉树必有n-1条树枝(分枝)。

完全二叉树的性质性质4 具有n个结点的完全二叉树的高度为log2n+1性质5 对一棵有n个结点的完全二叉树,若按自上而下,自左至右的顺序对二叉树中的所有结点从1开始编号,则对任一结点i(1≤i≤n),有:①若i=1,则结点i是二叉树的根,无双亲;若i>1,则其双亲结点是[i/2]。

②如果2i>n,结点i无左孩子(此时结点i为叶子);否则其左孩子是结点2i。

③若2i+1>n,结点i无右孩子;否则其右孩子是结点2i+1d. 3种遍历方法的递归算法(若树非空):1.先序遍历(树T):根→左→右:ABDEHICFG2.中序遍历(树T):左→根→右:DBHEIAFCG3.后序遍历(树T):左→右→根:DHIEBFGCA画二叉树已知一棵二叉树的先序序列和中序序列,或者后序序列和中序序列,就可画出该二叉树;但若只给出一棵二叉树的先序序列和后序序列,则无法画出该二叉树。

2、程序与算法1)快速排序(一趟)、归并排序(一趟)算法思想及实现(注:课本129页13题:{12,2,16,30,28,10,20,6,18}一趟快速排序的结果为:6,2,10,12,28,30,20,16,18一趟归并的结果:2,12,16,30,10,28,6,20,18)a.快速排序(一趟)(程序在119页)private void qkOne(int start, int end, ref int mid)//【start, end分别为待排序列的首尾位置,mid为一趟分割后找到的分区位置】{ int i,j,x;i=start;j = end;x = data[i]; //【将第1个值保存在x中,作基准】while (i != j){while (i < j && data[j]>=x)j--; //【自右向左扫描】if (i < j){data[i] = data[j];i++;while(i<j && data[i] <=x)i++; //【自左向右扫描】if (i < j){data[j] = data[i];j--; } } }mid=i;data[i]=x; }b.归并排序(一趟)private void merge(DataType[] a, int k, DataType[] b){int n = this.length; //【注意n应为待排序列的长度】int i = 0;while (i + 2 * k - 1 < n){two2one(a, i, i + k - 1, i + 2 * k - 1, b); //【归并长度为k的两子序列】i = i + 2 * k; }if (i + k < n ) //【余下两个子序列,但其中一个长度小于k】two2one(a, i, i + k - 1, n - 1, b);else //【将最后一个子序列追加到数组b中】for (; i < n; i++)b[i] = a[i]; }2)二叉排序树创建、查找、二分法查找算法思想及实现a.创建:(第一种)public void insBTree(char k){ TreeNode p, q, position=null;if (biSearch(k)==null) //【用查找算法,当树中找不到该关键字时可插入】{ q = new TreeNode(k);if (root == null) {root = q;}else{ p=root;while (p != null){ position = p; //【position指向应插入位置的父结点】if (k < p.key) { p = p.leftChild;}else {p = p.rightChild;} }if (k < position.key) {position.leftChild = q;}else {position.rightChild = q;} } } }(第二种)参照课本111页public void insBTree(char k){ TreeNode p, q;q=new TreeNode(k);if(root == null) { root=q;}else{ p=root;while (true){ if (p.key==k)return; //【有重复不插】else{if(k < p.key){ if(p.leftChild == null){ p.leftChild=q;return; }elsep=p.leftChild;} //【插入到左子树】else{ if(p.rightChild == null){ p.rightChild=q;return;}elsep=p.rightChild;} //【插入到右子树】} } } } }b.查找public TreeNode biSearch(char k){ TreeNode p = this.root;while ((p != null) && (p.key != k)){ if (p.key > k)p = p.leftChild;elsep = p.rightChild; }return (p); }c.二分法查找public int binSearch(int keyValue){ int low,high,mid; //有序表的下、上限和中间位置low=0;high=length-1; // 初始化下限、上限while (low <= high){ mid=(low + high) / 2; //确定中间位置if (data[mid].key == keyValue)return mid;if(data[mid].key < keyValue)low = mid+1 ;elsehigh = mid-1 ; }return -1;}二、数据库1、了解数据库设计的过程。

需求分析→概念模式设计→逻辑模式设计→物理模式设计→实施、运行、维护2、掌握概念模式设计方法:能根据数据库需求分析,画出E-R图(UML类图),并将其转换成关系模式。

1)E-R图/UML类图(看书页)a.E/R图的组成:实体型:用矩形表示。

属性:用椭圆形表示。

联系:用菱形框表示,并用直线将联系与相应的实体相连接;(箭头指1-side)注:图中要标出联系类型(1:1或1:m或m:n)b.UML类图(看书页)关系的度:参与一个关系的类的数目最常用的重数:一个类与另一个类的对象存在的数目上的对应关系①0..1:下界0,上界1。

②0..*(或*):从0到无穷大,说明该端参与的对象数不受限。

③0..n:从0到n④单个1 (或1…1) :关系中参与的对象数恰好是1。

2) UML 图到关系模式的转换:关系模式 关系名(关键属性,A1,A2,A3,…,An ),主键要用下划线① 实体(E)到关系模式的转换规则:将实体的名称作为关系的名称,将实体的属性作为关系的属性,并用下划线标识出主键。

② 联系(R)到关系模式的转换规则1 (1:1联系):在任意一个关系模式属性集中加入另一个关系模式的主键(外键),不需要单独转换为一个独立的关系模型。

相关主题