张乃孝主编《算法与数据结构—C语言描述》.
抽象代数基础丘维声答案

抽象代数基础丘维声答案【篇一:index】t>------关于模n剩余类环的子环和理想的一般规律[文章摘要]通过对模n剩余类的一点思考,总结出模n剩余类环的子环和理想的规律:所有理想为主理想,可以由n的所有因子作为生成元生成,且这些主理想的个数为n的欧拉数。
使我们得以迅速求解其子环和理想。
[关键字]模n剩余类环循环群子环主理想[正文]模n剩余类是近世代数里研究比较透彻的一种代数结构。
一,定义:在一个集合a里,固定n(n可以是任何形式),规定a元间的一个关系r,arb,当而且只当n|a-b的时候这里,符号n|a-b表示n能整除a-b。
这显然是一个等价关系。
这个等价关系普通叫做模n的同余关系,并且用a?b(n)来表示(读成a同余b模n)。
这个等价关系决定了a的一个分类。
这样得来的类叫做模n的剩余类。
二,我们规定a的一个代数运算,叫做加法,并用普通表示加法的符号来表示。
我们用[a]来表示a所在的剩余类。
规定:[a]+[b]=[a+b];[0]+[a]=[a];[-a]+[a]=[0];根据群的定义我们知道,对于这个加法来说,a作成一个群。
叫做模n剩余类加群。
这样得到的剩余类加群是循环群,并且[1]是其生成元,[0]是其单位元。
三,我们再规定a的另一个代数运算,叫做乘法,并且规定:[a][b]=[ab];根据环的定义我们知道,对于加法和乘法来说,a作成一个环。
叫做模n剩余类环。
四,关于理想的定义:环a的一个非空子集a叫做一个理想子环,简称为理想,假如:(i) a,b?a?a-b?a;(ii)a?a,b?a?ba,ab?a;所以如果一个模n剩余类环a的子环a要作为一个理想,需要满足: (i) [a],[b]?a?[a-b]?a;(ii)[a]?a,[b]?a?[ba],[ab]?a;由以上四点可得到对一个模n剩余类环,求其所有子环和理想的一个方法。
思路:第一,模n剩余类环对加法构成加群,根据群的定义,找出所有子群;第三,对所有子群,根据环的定义,对乘法封闭,从所有子群里找出所有环;第四,对所有子环,根据理想的定义,找出所有理想。
第六讲 二叉树.

1
教材与参考资料
普通高等教育:“十一五”国家级规划教材 普通高等教育精品教材 《算法与数据结构— C语言描述》(第2版) 张乃孝 编著, 高等教育出版社 2008.
第5章 二叉树与树(5.1,5.2,5.3)
普通高等教育:“十一五”国家级规划教材配套参考书 《算法与数据结构》(第2版)学习指导与习题解析 张乃孝 编著, 高等教育出版社 2009.
ADT BinTree is operations BinTree createEmptyBinTree(void) 创建一棵空的二叉树。 BinTree consBinTree(BinTreeNode root, BinTree left, BinTree right) 返回一棵二叉树,其根结点是root,左右二叉树分别为left和right。 int isNull ( BinTree t ) 判断二叉树t是否为空。 BinTreeNode root ( BinTree t ) 返回二叉树t的根结点。若为空二叉树,则返回一特殊值。 BinTreeNode parent (BinTree t , BinTreeNode p ) 返回结点p的父结点。当指定的结点为根时,返回一个特殊值。 BinTree leftChild ( BinTree t , BinTreeNode p ) 返回p结点的左子树,当指定结点没有左子树时,返回一个特殊值。 BinTree rightChild ( BinTree t , BinTreeNode p) 返回p结点的右子树,当指定结点没有右子树时,返回一个特殊值。 end ADT BinTree
A的兄弟
A B
A的子孙
Level 2
子结点 Level 3 叶结点 Level 4
Chap8-算法与数据结构—C语言描述(第2版)张乃孝编PPT课件

初始时令i=s,j=t
首先从j所指位置向前搜索第一个关键字小于x的记 录,并和rp交换
再从i所指位置起向后搜索,找到第一个关键字大 于x的记录,和rp交换
重复上述两步,直至i==j为止
再分别对两个子序列进行快速排序,直到每个子序 列只含有一个记录为止
-
26
x 例 初始关键字: 2479 38 146395 4997 76 941793 246795 50
-
2
8.2 插入排序
直接插入排序
排序过程:整个排序过程为n-1趟插入,即先将序列中 第1个记录看成是一个有序子序列,然后从第2个记录 开始,逐个进行插入,直至整个序列有序
算法描述
void insertSort(SortObject * pvector)
-
3
例
(49) 38 65 97 76 13 27 49'
T(n)=O(n²) 空间复杂度:S(n)=O(1)
-
25
快速排序
基本思想:通过一趟排序,将待排序记录分割成独立 的两部分,其中一部分记录的关键字均比另一部分记 录的关键字小,则可分别对这两部分记录进行排序, 以达到整个序列有序
排序过程:对r[s……t]中记录进行一趟快速排序,附 设两个指针i和j,设枢轴记录rp=r[s],x=rp.key
i i i iij j j j j 完成一趟排序: ( 27 38 13) 49 (76 97 65 50)
分别进行快速排序: ( 13) 27 (38) 49 (50 65) 76 (97)
算法评价 时间复杂度:T(n)=O(n²) 空间复杂度:S(n)=O(1) 算法中增加了一个辅助空间temp
-
7
Chap7算法与数据结构—C语言描述(第2版)张乃孝编课件

下图是一棵3阶B-树,m=3。它满足: (1)每个结点的孩子个数小于等于3。 (2)除根结点外,其他结点至少有=2个孩子。 (3)根结点有两个孩子结点。 (4)除根结点外的所有结点的n大于等于=1,小于等于m-l=2。 (5)所有叶结点都在同一层上。
root A 1 100
B 1 50
C 1 150
(n,A0,K1,A1,K2,A2,… ,Kn,An)
其中,Ki(1≤i≤n)为关键字,且Ki<Ki+1(1≤i≤n-1)。 Ai(0≤i≤n)为指向子树根结点的指针。且Ai所指子树所有结点 中的关键字均小于Ki+1。An所指子树中所有结点的关键字均大于Kn。 n为结点中关键字的个数,满足≤n≤m-1。
8
12
二叉排序树的检索
在下面给出的检索算法中,设在二叉排序树上查找关键码 为key的结点,算法结束时返回检索成功或失败的标志。并 且检索成功时,position指向查找到的结点指针;检索失败 时,position指向该结点应插入位置的父结点。 i n t s e a r c h ( P B i n S e a r c h Tr e e p t r e e , K e y Ty p e ke y, PBinSearchNode *position)
失去平衡的最小子树是指以离插入结点最近,且平衡因 子绝对值大于1的结点作为根的子树。假设用A表示失去平 衡的最小子树的根结点,则调整该子树的操作可归纳为下 列四种情况。
(1)LL型平衡旋转法
由于在 A 的左孩子 B 的左子树上插入结点 F,使 A 的平衡 因子由 1 增至 2 而失去平衡。故需进行一次顺时针旋转操作。 即将 A 的左孩子 B 向右上旋转代替 A 作为根结点, A 向右下旋 转成为B的右子树的根结点。而原来B的右子树则变成A的左 子树。
Chap3算法与数据结构—C语言描述(第2版)张乃孝编课件

E = ""
(注意区分空串""与空格串" "区别)
T = “ABBABBCA ” t= “ABB ABBCA ” (T和t不等) P= “BBC ” (P是T的子串,在T的位置是5)
子串:串中任意个连续的字符组成的子序列。 主串:包含子串的串相应地称为主串。 特别地,空串是任意串的子串。任意串s都是s本身的子 串。 除s本身之外,s的其它子串称为s的真子串。 位置:字符在序列中的序号。子串在主串中的位置则以 子串的第一个字符在主串中的位置来表示。 相等:两个串的长度相等,并且对应位置的字符都相等。
2 链接表示
在串的链接表示中,每个结点包含两个字段:字符和指 针,分别用于存放字符和指向下一个结点的指针。这样一个 串就可 用一个单链表来表示,其类型定义为:
struct StrNode; typedef struct StrNode *PStrNode; struct StrNode { char c; PStrNode link; }; typedef struct StrNode *LinkString; /* 链串的结点 */ /* 结点指针类型 */ /* 链串的结点结构 */
String concat (String s1, Sting s2 ) //返回将串s1和s2拼接在一起构成的一个新串。 String subStr (String s, int i, int j ) //在串s中,求从串的第i个字符开始连续j个字符所构成的子串。 int index (String s1, String s2 ) //如果串s2是s1的子串,则可求串s2在串s1中第一次出现的位置。 end ADT String
}
Chap4算法与数据结构—C语言描述(第2版)张乃孝编课件

4.1 栈及其抽象数据类型
4.1.1. 定义
栈是限定在表尾进行插入或删除操作的线性表。表尾端称 栈顶,表头端称栈底。如图。 出栈 进栈 栈的修改是按后进先出 的原则进行的。 a 栈顶
n
... a2 a1
栈底
例1.一个栈的进栈序列是a,b,c,d,e,则栈不 可能的出栈序列是:
(A)edcba (B)decba (C) dceab (D)abcde
从pastack所指的栈中删除(或称弹出)一个元素。 当栈不空时,通过将栈顶变量减1达到元素删除的目的。 5. 取栈顶元素运算 程序实现
DataType top_seq( PSeqStack pastack )
当pastack所指的栈不为空栈时,将栈顶元素取出,而栈 本身未发生任何变化。
4.2.2链接表示
4.2 栈的实现
4.2.1顺序表示
typedef int DataType; /* 定义栈元素的数据类型, 这里定义为整型 */ struct SeqStack /* 顺序栈类型定义 */ { int MAXNUM; /* 栈中能达到的最大元素个数 */ int t; /*栈顶元素位置*/ DataType *s; }; typedef struct SeqStack * PSeqStack; D PSeqStack pastack;
typedef int DataType ; /* 定义栈中元素类型为整型, 也可定义为其他类型 */ struct Node; typedef struct Node * Pnode; struct Node /* 单链表结点结构 */ { DataType info; PNode link; }; struct LinkStack /* 链接栈类型定义 */ { PNode top; /* 指向栈顶结点 */ }; typedef struct LinkStack *PLinkStack ;
第二讲 线性表

LinkList llist;
/*llist是一个链表的头指针*/
26
链表的头指针与头结点
假设llist是某单链表的头指针,类型是LinkList, 存储结构 如下所示, 当单链表为空表时,llist的值为NULL.
llist
k0
k1
kn-1
为方便运算实现, 可以在单链表的第一个结点之前另加一 个头结点
20
算法分析与评价
在有n个元素的线性表里下标为i的元素前插入一 个元素需要移动n-i个元素, 删除下标为i的元素需 要移动n-i-1个元素 若在下标为i的位置上插入和删除元素的概率分 别是Pi和P'i, 则
插入时平均移动元素数为: Mi =ni=0 (n-i) Pi 删除时平均移动元素数为: Md =n-1i=0 (n-i-1) P'i
k0
附加信息
k1
…
k3
23
单链表表示
最简单的链表表示: 只为每个数据元素关联一 个链接, 表示后继关系 每个结点包括两个域
数据域: 存放元素本身信息 指针域: 存放其后继结点的存储位置
最后一个元素的指针不指向任何结点, 称为空 指针, 在图示中用“∧”表示, 在算法中用 “NULL”表示. 指向链表中第一个结点的指针, 称为这个链表 的头指针.
3
基本概念
表中所含元素的个数称为表的长度。 长度为零的表称为空表。 k0称为第一个元素, kn-1称为最后一个元素, ki(0≤i≤n-2)是ki+1的前驱, ki+1是ki的后继。
4
课程教学大纲-闽江学院

2009级电子信息科学与技术专业课程教学大纲物理学与电子信息工程系编制2009年09月目录《计算机应用技术基础》教学大纲 (4)《复变函数与积分变换》教学大纲 (9)《数学物理方程》教学大纲 (12)《电路分析基础》教学大纲 (16)《模拟电路》课程教学大纲 (21)《数字逻辑电路》课程教学大纲 (26)《信号与系统》课程教学大纲 (31)《电磁场与电磁波》课程教学大纲 (35)《C语言程序设计》课程教学大纲 (39)《Matlab语言》课程教学大纲 (49)《工程图学》课程教学大纲 (53)《专业英语》课程教学大纲 (56)《专业文献检索》课程教学大纲 (61)《新技术讲座》课程教学大纲 (64)《高频电路》课程教学大纲 (66)《数据结构与算法》课程教学大纲 (75)《通信原理》课程教学大纲 (85)《硬件描述语言设计》课程教学大纲 (90)《微机原理与应用》课程教学大纲 (102)《单片机原理与接口技术》课程教学大纲 (108)《计算机网络技术》课程教学大纲 (115)《数字信号处理》课程教学大纲 (121)《传感器原理及应用》课程教学大纲 (128)《语音信号处理》课程教学大纲 (134)《数字图像处理》课程教学大纲 (139)《DSP技术与应用》课程教学大纲 (143)《SoPC原理及应用》课程教学大纲 (149)《DSP课程设计》教学大纲 (153)《实时操作系统》课程教学大纲 (163)《面向对象程序设计》课程教学大纲 (169)《嵌入式系统》课程教学大纲 (176)《互动多媒体技术》课程教学大纲 (181)《数据库开发技术》课程教学大纲 (186)《软件工程》课程教学大纲 (194)《嵌入式系统课程设计》教学大纲 (201)《传感器原理及应用》课程教学大纲 (204)《自动控制原理》课程教学大纲 (209)《计算机控制技术》课程教学大纲 (213)《电子系统设计》课程教学大纲 (216)《可编程逻辑控制原理与设计》课程教学大纲 (221)《数字信号处理》课程教学大纲 (224)《电子系统设计课程设计》教学大纲 (230)《计算机应用技术基础》教学大纲课程代号:11110010总学时: 75 (讲授/理论 30 学时,上机/课外实践 45 学时)适用专业:电子信息工程、电子信息科学与技术、电子科学与技术先修课程:计算机应用技术基础、C程序设计一、本课程地位、性质和任务《计算机软件技术基础》课程是针对电子科学与技术专业本科生的需要,讲授计算机软件的基本概念、方法和实用技术,通过本课程的学习,学生能掌握有关算法设计、实用程序设计、数据库系统原理和软件工程的基本概念和方法,并理解操作系统的原理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ad(n/b)
33
286
-9
ab(n/b)
ad(n/b)
34
287
1
35
294
3
直接查出了使用
直接查出来使用
36
306
-7
先进先出
后进先出
37
336
8
Docommand
DoCommand
38
336
20
File name
File
22
223
-4
23
231
6
Queue queue[R];
/*删除*/
24
231
8.5
/*插入一行*/
/*取KeyType为[0,r-1]
中的整数*/
25
231
11
int i,j,k;
int i,j,k;
Queue queue[r];
26
251
-2
建立n(n-1)/2条线路
建立n(n-1)/2条不重复的线路
张乃孝主编《算法与数据结构—C语言描述》
勘误表
二○○三年一月
序号
页码
行号
原文
更正
1
3
-7
2
44
7
*pclink
*pclist
3
76
3~6
/*见下栏左侧*/476来自51078
(i=1,2,3...)
/*删除*/
6
107
10
当i=0时
当子树个数为0时
7
109
12
c=root(p)
c=p;
8
115
8
在兄弟
在右兄弟
9
115
12
i<=t->n;
i<t->n;
10
118
-10
*PCSNode;
*CSTree;
11
130
5
每个内部结点
每个分支结点
12
130
-5
前序周游
先根周游
13
131
15
t==NULL
p==NULL
14
164
-4
小于基本区域
不大于基本区域
15
193
图6.21
(a)LR(0)型调整
(b)LR(L)型调整
27
261
5
集合U中的顶点。
集合U中的顶点(为了简明,
dist[n]中省略了顶点信息
vertex的值)。
28
264
7
Ak[i-1][j-1]
Ak[i][j]
29
267
9
30
284
-4
由于第j+1次free是虚设的,所以cj+1=cj+pj+1。
/*删除*/
31
285
14
C6=7
C6=6
32
286
-10
(c)LR(R)型调整
(a)RL(0)型调整
(b)RL(L)型调整
(c)LR(R)型调整
16
201
16
17
202
图6.24
(a)删除3后的B树
(a)删除前的B树
18
208
9
q1=q2=q3=q4=q5=q6=1
q0= q1=q2=q3=q4=q5=q6=11
19
214
14
20
223
-7
21
223
-5