2 线性表 Linear List 姜玻 2 线性表 Linear List 2.1 线性表的定义和 基本操作 2.2 线性表的实现 线性表的顺序存储 姜玻 教育科学与技术学院 数字媒体技术系 单链表 带表头结点的单链表 单循环链表 双向链

Size: px
Start display at page:

Download "2 线性表 Linear List 姜玻 2 线性表 Linear List 2.1 线性表的定义和 基本操作 2.2 线性表的实现 线性表的顺序存储 姜玻 教育科学与技术学院 数字媒体技术系 单链表 带表头结点的单链表 单循环链表 双向链"

Transcription

1 2.1 线性表的定义和 基本操作 2.的实现 教育科学与技术学院 数字媒体技术系

2 前情提要 程序 = 数据结构 + 算法何为数据结构, 相关的术语逻辑结构存储结构运算抽象数据类型 (Abstract Data Type,ADT) C++ 定义和实现何为算法, 其特点和设计要求算法的时间复杂度 ( 大 O 表示 ) 算法的空间复杂度 2.的实现

3 前情提要 ADT Stack{ 数据 : 0 个或多个元素的序列 a 0, a 1,..., a n 1 最大允许长度为 MaxStackSize 运算 : Create(): 建立一个空栈 Destroy(): 撤销一个栈 Push(x): 值为 x 的新元素进栈, 成为栈顶元素 Pop(): 从栈中删除栈顶元素 Top(x): 在 x 中返回栈顶元素 2.的实现

4 本章主要内容 线性表的定义和基本操作线性表的实现顺序存储链式存储线性表的应用 2.的实现

5 本章主要内容 线性表的定义和基本操作线性表的实现顺序存储链式存储线性表的应用 2.的实现

6 线性表是 n( 0) 个元素 a 0, a 1,..., a n 1 的线性序列, 记为 (a 0, a 1,..., a n 1 ) 其中 n 是线性表中元素的个数, 称为线性表的长度 (n = 0 时称为空表 ) a i 是表中下标为 i 的元素称 a i 是 a i+1 的直接前驱元素称 a i+1 是 a i 的直接后继元素 2.的实现

7 线性表的定义和基本操作 通常, 线性表中的元素具有相同类型简单类型 : 整数结构类型 : 记录动态数据结构, 表长可变化可执行检索 修改操作, 也可在表中任意位置执行插入和删除元素的操作 2.的实现

8 线性表的定义和基本操作 2.1 线性表的定义和 基本操作 2.的实现

9 线性表 ADT ADT LinearList{ 数据 : 0 个或多个元素的线性序列 (a 0, a 1,..., a n 1 ) 最大允许长度 MaxListSize 运算 : Create(): 创建一个空线性表 Destroy(): 撤销一个线性表 IsEmpty(): 若线性表为空, 则返回 true, 否则返回 false Length(): 返回表中元素个数 2.的实现

10 线性表 ADT Find(i, x): 在 x 中返回表中下标为 i 的元素 a i 若不存在, 返回 false, 否则返回 true Search(x): 若 x 不在表中, 则返回 -1, 否则返回 x 在表中的下标 Insert(i, x): 在元素 a i 之后插入 x 若 i = 1, 则 x 插在第一个元素 a 0 前 若插入成功, 则返回 true, 否则返回 false 2.的实现

11 线性表 ADT Delete(i): 删除元素 a i 若删除成功, 则返回 true, 否则返回 false Update(i, x): 将元素 a i 的值修改为 x 若修改成功, 则返回 true, 否则返回 false Output(out): 把表送至输出流 2.的实现

12 线性表的 C++ 模板抽象类 #include <iostream.h> template<class T> class LinearList { public: virtual bool IsEmpty() const = 0; virtual int Length() const = 0; virtual bool Find(int i, T& x) const = 0; virtual int Search(T x) const = 0; virtual bool Insert(int i, T x) = 0; 2.的实现

13 线性表的 C++ 模板抽象类 virtual bool Delete(int i) = 0; virtual bool Update(int i, T x) = 0; virtual void Output(ostream& out) const = 0; protected: int n;// 线性表的长度 ; 2.的实现

14 本章主要内容 线性表的定义和基本操作线性表的实现顺序存储链式存储线性表的应用 2.的实现

15 2.的实现 线性表有两种典型的存储方式 顺序存储链式存储 单链表 带表头结点的单链表 单循环链表 双向链表 2.的实现

16 本章主要内容 线性表的定义和基本操作线性表的实现顺序存储链式存储线性表的应用 2.的实现

17 用一组地址连续的存储单元依次存储线性表 (a 0, a 1,..., a n 1 ) 中的元素 逻辑上相邻的元素在物理上 ( 存储空间上 ) 也相邻 顺序表示的线性表称为顺序表 2.的实现

18 线性表的顺序存储 若顺序表中每个元素占 k 个存储单元, 第一个元 素 a 0 在计算机内存中的首地址为 loc(a 0 ), 则表中任意 一个元素 a i 在内存中的存储地址 loc(a i ) 为 2.的实现?

19 线性表的顺序存储 若顺序表中每个元素占 k 个存储单元, 第一个元 素 a 0 在计算机内存中的首地址为 loc(a 0 ), 则表中任意 一个元素 a i 在内存中的存储地址 loc(a i ) 为 2.的实现 loc(a i ) = loc(a 0 ) + i k 随机存取给定 loc(a 0 ) 和 k, 可确定线性表中任一元素的存储地址

20 线性表顺序存储的 C++ 实现 C++ 中的一维数组占用一组地址连续的存储单元用 C++ 的一维数组来描述顺序表的存储结构, 并实现顺序表类动态分配一维数组 2.的实现

21 顺序表的 C++ 实现 #include linearlist.h template<class T> class SeqList:public LinearList<T> { public: SeqList(int msize); SeqList() { delete [] elements; bool IsEmpty() const; int Length() const; bool Find(int i, T& x) const; 2.的实现

22 顺序表的 C++ 实现 int Search(T x) const; bool Insert(int i, T x); bool Delete(int i); bool Update(int i, T x); void Output(ostream& out) const; private: int maxlength;// 顺序表的最大长度 T *elements// 动态一维数组指针 ; ; 2.的实现

23 顺序表的 C++ 实现 template<class T> SeqList<T>::SeqList(int msize) { maxlength=msize; elements=new T[maxLength];// 动态分配存储空间 n=0; 2.的实现

24 顺序表的 C++ 实现 template<class T> bool SeqList<T>::IsEmpty() const { return n==0; template<class T> int SeqList<T>::Length() const { return n; 2.的实现

25 顺序表的 C++ 实现 template<class T> bool SeqList<T>::Find(int i, T& x) const { if(i<0 i>n-1){ cout<< Out of Bounds <<endl; return false; x=elements[i];// 通过引用参数 x 返回 return true; 2.的实现

26 顺序表的 C++ 实现 template<class T> bool SeqList<T>::Search(T x) const { for(int j=0; j<n; j++) if(elements[j] == x) return j;// 从头开始 return -1; 2.的实现

27 顺序表的 C++ 实现 template<class T> bool SeqList<T>::Insert(int i, T x) { if(i<-1 i>n-1){ cout<< Out of Bounds <<endl; return false; if(n == maxlength){// 上溢 cout<< OverFlow <<endl; return false; for(int j=n-1; j>i; j- -) elements[j+1] = elements[j]; elements[i+1]=x; n++; return true; 2.的实现

28 顺序表的 C++ 实现 2.1 线性表的定义和 基本操作 2.的实现

29 顺序表的 C++ 实现 template<class T> bool SeqList<T>::Delete(int i) { if(!n){// 下溢 cout<< UnderFlow <<endl; return false; if(i<0 i>n-1){ cout<< Out of Bounds <<endl; return false; for(int j=i+1; j<n; j++) elements[j-1] = elements[j]; n- -; return true; 2.的实现

30 顺序表的 C++ 实现 2.1 线性表的定义和 基本操作 2.的实现

31 顺序表的 C++ 实现 template<class T> bool SeqList<T>::Update(int i, T x) { if(i<0 i>n-1){ cout<< Out of Bounds <<endl; return false; elements[i] = x; return true; 2.的实现

32 顺序表的 C++ 实现 template<class T> void SeqList<T>::Output(ostream& out) const { for(int i=0; i<n; i++) out<<elements[i]<< ; out<<endl; 2.的实现

33 顺序表的 C++ 实现 SeqList 中的 n 哪里来的? 顺序表可随机存取表中元素 插入和删除时效率较低 2.的实现

34 插入操作的时间复杂度 设顺序表长度为 n, 在位置 i( 1 i n 1) 后插入一 个元素要移动 n i 1 个元素 有 n + 1 个可插入元素的位置, 概率相等 为 P i = 1/(n + 1) 平均情况 E i = n 1 i= 1 1 n + 1 (n i 1) = n 2 2.的实现 平均移动多少元素,O(?)

35 插入操作的时间复杂度 设顺序表长度为 n, 在位置 i( 1 i n 1) 后插入一 个元素要移动 n i 1 个元素 有 n + 1 个可插入元素的位置, 概率相等 为 P i = 1/(n + 1) 平均情况 E i = n 1 i= 1 1 n + 1 (n i 1) = n 2 2.的实现 平均移动一半元素,O(n)

36 删除操作的时间复杂度 在位置 i(0 i n 1) 删除一个元素同样要移 动 n i 1 个元素 有 n 个可删除元素的位置, 概率相等为 Q i = 1/n 平均情况 E d = n 1 i=0 平均移动一半元素,O(n) 1 n 1 (n i 1) = n 2 2.的实现

37 顺序表应用实例 : 求集合的并 求集合 A 和 B 的并 A = A B 用顺序表 LA 和 LB 分别表示集合 A 和 B, 并 的结果放在 LA 中, 算法 :? 2.的实现

38 顺序表应用实例 : 求集合的并 求集合 A 和 B 的并 A = A B 用顺序表 LA 和 LB 分别表示集合 A 和 B, 并 的结果放在 LA 中, 算法 : (1) 置 i = 0 (2) 若 i 小于集合 LB 的元素个数, 则做 (3), 否则转 (7) (3) 取出集合 LB 中 i 位置的元素 x (4) 若 x 不在集合 LA 中, 则将其插入 LA 最后 (5)i + + (6) 转 (2) 继续 (7) 结束 2.的实现

39 顺序表应用实例 : 求集合的并 #include seqlist.h template<class T> void Union(SeqList<T> &LA, SeqList<T> LB) { T x; for(int i=0; i<lb.length(); i++){ LB.Find(i, x); if(la.search(x)==-1) LA.Insert(LA.Length()-1, x); 2.的实现

40 顺序表应用实例 : 求集合的并 #include seqlistu.h const int SIZE = 20; void main() { SeqList<int> LA(SIZE); SeqList<int> LB(SIZE); for(int i=0; i<5; i++) LA.Insert(i-1, i); for(i=5; i<10; i++) LB.Insert(i-6, i); 2.的实现

41 顺序表应用实例 : 求集合的并 LB.Insert(-1, 0); LB.Insert(3, 2); LB.Insert(LB.Length()-1, 4); Union(LA, LB); LA.Output(cout); 最终的输出是什么? 2.的实现

42 前情提要 线性表的定义和基本操作线性表的实现顺序存储 顺序表链式存储 链表线性表的应用 2.的实现

43 前情提要 : 线性表 ADT ADT LinearList{ 数据 : 0 个或多个元素的线性序列 (a 0, a 1,..., a n 1 ) 最大允许长度 MaxListSize 运算 : Create(): 创建一个空线性表 Destroy(): 撤销一个线性表 IsEmpty(): 若线性表为空, 则返回 true, 否则返回 false Length(): 返回表中元素个数 2.的实现

44 前情提要 : 线性表 ADT Find(i, x): 在 x 中返回表中下标为 i 的元素 a i 若不存在, 返回 false, 否则返回 true Search(x): 若 x 不在表中, 则返回 -1, 否则返回 x 在表中的下标 Insert(i, x): 在元素 a i 之后插入 x 若 i = 1, 则 x 插在第一个元素 a 0 前 若插入成功, 则返回 true, 否则返回 false 2.的实现

45 前情提要 : 线性表 ADT Delete(i): 删除元素 a i 若删除成功, 则返回 true, 否则返回 false Update(i, x): 将元素 a i 的值修改为 x 若修改成功, 则返回 true, 否则返回 false Output(out): 把表送至输出流 2.的实现

46 前情提要 : 顺序表 顺序表的优点?? 顺序表的劣势?? 2.的实现

47 前情提要 : 顺序表 顺序表的优点存储空间利用率高可以随机存取元素顺序表的劣势插入 删除操作效率低须事先估计元素个数, 估计大了浪费空间, 估计小了容易产生溢出克服劣势, 怎么办? 2.的实现

48 前情提要 : 顺序表 顺序表的优点存储空间利用率高可以随机存取元素顺序表的劣势插入 删除操作效率低须事先估计元素个数, 估计大了浪费空间, 估计小了容易产生溢出克服劣势, 怎么办? 链接表示的线性表 链表举例 : 上课回答问题 2.的实现

49 线性表的链接表示 链表 用一组任意的存储单元存储线性表的数据元素 这组存储单元可以是连续的, 也可以是不连续的动态链表 静态链表 单向链表 ( 循环链表 / 非循环链表 ) 双向链表 ( 循环链表 / 非循环链表 ) 2.的实现

50 单链表 结点 (Node) 每个元素占用一个结点每个结点由两个域组成 数据域 element 指针域 link( 后继结点的地址 ) 2.的实现

51 结点类的 C++ 实现 #include linearlist.h template<class T> class SingleList; template<class T> class Node { private: T element; Node<T> *link; friend class SingleList<T>; ; 2.的实现

52 单链表 线性表 (a 0, a 1,..., a n 1 ) 的单链表结构如图所示第一个元素 a 0 所在的结点称为头结点指向头结点的指针称为头指针 (first 指针 ) 元素 a n 1 所在结点称为尾结点 ( 无后继 ) 空单链表其头指针为 NULL 2.的实现

53 单链表 结点与结点不要求存放在相邻的存储空间里, 相邻关系通过指针表现插入和删除操作比顺序表简单高效失去了顺序表随机存取元素的特性 2.的实现

54 单链表的 C++ 实现 2.1 线性表的定义和 基本操作 2.的实现

55 单链表的 C++ 实现 template<class T> class SingleList:public LinearList<T> { public: SingleList(){first=NULL;n=0; SingleList(); bool IsEmpty() const; int Length() const; bool Find (int i, T& x) const; int Search(T x) const; 2.的实现

56 单链表的 C++ 实现 bool Insert(int i, T x); bool Delete(int i); bool Update(int i, T x); void Clear(); void Output(ostream& out) const; private: Node<T>* first; ; 2.的实现

57 单链表的 C++ 实现 template<class T> SingleList<T>:: SingleList() { Node<T> *p; while(first){ p=first->link; delete first; first=p; 2.的实现

58 单链表的 C++ 实现 template<class T> int SingleList<T>::Length() const { return n; template<class T> bool SingleList<T>::IsEmpty() const { return n==0; 2.的实现

59 单链表的 C++ 实现 template<class T> bool SingleList<T>::Find(int i, T& x) const { if(i<0 i>n-1){ cout<< Out of Bounds ; return false; Node<T> *p=first; for(int j=0; j<i; j++) p=p->link; x=p->element; return true; 2.的实现

60 单链表的 C++ 实现 template<class T> int SingleList<T>::Search(T x) const { Node<T> *p=first; for(int j=0; p&&p->element!=x; j++) p=p->link; if(p) return j; return -1; 2.的实现

61 单链表的插入操作 2.1 线性表的定义和 基本操作 q->link=p->link; p->link=q; 2.的实现

62 单链表的 C++ 实现 template<class T> bool SingleList<T>::Insert(int i, T x) { if(i<-1 i>n-1){ cout<< Out of Bounds ; return false; Node<T> *q=new Node<T>; q->element=x; Node<T> *p=first; for(int j=0; j<i; j++) p=p->link; 2.的实现

63 单链表的 C++ 实现 if(i>-1){ q->link=p->link; p->link=q; else{ q->link=first; first=q; n++; return true; 2.的实现

64 单链表的删除操作 2.1 线性表的定义和 基本操作 q->link=p->link; delete p; 2.的实现

65 单链表的 C++ 实现 template<class T> bool SingleList<T>::Delete(int i) { if(!n){ cout<< UnderFlow <<endl; return false; if(i<0 i>n-1){ cout<< Out of Bounds <<endl; return false; 2.的实现

66 单链表的 C++ 实现 Node<T> *p=first, *q=first;// 删除 p,q 是 p 的前驱 for(int j=0; j<i-1; j++) q=q->link; if(i==0) first=first->link; b else{ p=q->link; q->link=p->link; delete p; n- -; return true; 2.的实现

67 单链表的 C++ 实现 template<class T> bool SingleList<T>::Update(int i, T x) { if(i<0 i>n-1){ cout<< Out of Bounds <<endl; return false; Node<T> *p=first; for(int j=0; j<i; j++) p=p->link; p->element=x; return true; 2.的实现

68 单链表的 C++ 实现 template<class T> void SingleList<T>::Output(ostream& out) const { Node<T> *p=first; while(p){ out<<p->element<< ; p=p->link; out<<endl; 2.的实现

69 单链表运算的优缺点 优点插入和删除只需修改一两个指针, 无需移动元素 如已知前驱结点, 插入 删除运算的复杂度为 O(1) 可以动态分配结点空间, 线性表的长度只受内存大小限制缺点查找运算费时, 只能顺序查找, 不能随机查找, 复杂度为 O(n) 2.的实现

70 单链表应用实例 : 求集合的交 求集合 A 和 B 的交 A = A B 用单链表 LA 和 LB 分别表示集合 A 和 B, 交 的结果放在 LA 中, 算法 :? 2.的实现

71 单链表应用实例 : 求集合的交 求集合 A 和 B 的交 A = A B 用单链表 LA 和 LB 分别表示集合 A 和 B, 交 的结果放在 LA 中, 算法 : (1) 置 i = 0 (2) 若 i 小于当前集合 LA 中的元素个数, 则做 (3), 否则转 (6) (3) 取出集合 LA 中 i 位置的元素 x (4) 若 x 不在集合 LB 中, 则将其从 LA 中删除, 否 则 i++ (5) 转 (2) 继续 (6) 结束 2.的实现

72 单链表应用实例 : 求集合的交 #include singlelist.h template<class T> void Intersection(SingleList<T> &LA, SingleList<T> &LB){ T x; int i=0; while(i<la.length()){ LA.Find(i, x); if(lb.search(x)==-1) LA.Delete(i); else i++; 2.的实现

73 前情提要 线性表 顺序表链表 单链表 重点关注插入 删除操作及其运行效率 2.的实现

74 前情提要 : 单链表的插入操作 2.1 线性表的定义和 基本操作 q->link=p->link; p->link=q; 2.的实现

75 前情提要 : 单链表插入操作的 C++ 实现 template<class T> bool SingleList<T>::Insert(int i, T x) { if(i<-1 i>n-1){ cout<< Out of Bounds ; return false; Node<T> *q=new Node<T>; q->element=x; Node<T> *p=first; for(int j=0; j<i; j++) p=p->link; 2.的实现

76 前情提要 : 单链表插入操作的 C++ 实现 if(i>-1){ q->link=p->link; p->link=q; else{ q->link=first; first=q; n++; return true; 2.的实现

77 前情提要 : 单链表的删除操作 2.1 线性表的定义和 基本操作 q->link=p->link; delete p; 2.的实现

78 前情提要 : 单链表删除操作的 C++ 实现 template<class T> bool SingleList<T>::Delete(int i) { if(!n){ cout<< UnderFlow <<endl; return false; if(i<0 i>n-1){ cout<< Out of Bounds <<endl; return false; 2.的实现

79 前情提要 : 单链表删除操作的 C++ 实现 Node<T> *p=first, *q=first;// 删除 p,q 是 p 的前驱 for(int j=0; j<i-1; j++) q=q->link; if(i==0) first=first->link; else{ p=q->link; q->link=p->link; delete p; n- -; return true; 2.的实现

80 带表头结点的单链表 上述单链表在插入和删除操作时 : 一般情况特殊情况 : 表的最前面进行插入和删除特殊 一般在单链表前增加一个结点 : 表头结点表头结点的数据域 element 为空 / 存放辅助数据, 不存放线性表中的元素 2.的实现

81 带表头结点的单链表 2.1 线性表的定义和 基本操作 每个结点都有一个前驱结点 简化了插入和删除算法的描述 2.的实现

82 带表头结点的单链表 2.1 线性表的定义和 基本操作 每个结点都有一个前驱结点 简化了插入和删除算法的描述 2.的实现

83 带表头结点单链表的 C++ 实现 template<class T> HeaderList<T>::HeaderList() { Node<T> *first = new Node<T>; first->link = NULL; n = 0; 2.的实现

84 带表头结点单链表的 C++ 实现 template<class T> bool HeaderList<T>::Insert(int i, T x) { if(i<-1 i>n-1){ cout<< Out of Bounds <<endl; return false; Node<T> *p=first; for(int j=0; j<=i; j++) p=p->link; 2.的实现

85 带表头结点单链表的 C++ 实现 Node<T> *q=new Node<T>; q->element=x; q->link=p->link; p->link=q; n++; return true; 2.的实现

86 带表头结点单链表的 C++ 实现 template<class T> bool HeaderList<T>::Delete(int i) { if(!n){ cout<< UnderFlow <<endl; return false; if(i<0 i>n-1){ cout<< Out of Bounds <<endl; return false; 2.的实现

87 带表头结点单链表的 C++ 实现 Node<T> *q=first, *p; for(int j=0; j<i; j++) q=q->link; p=q->link; q->link=p->link; delete p; n- -; return true; 2.的实现

88 单循环链表 单链表尾结点的指针域置为第一个结点的地址 (a 0 所 在结点的地址 ) 从表中任一结点出发, 可访问表中所有结点 2.的实现

89 单循环链表 单链表尾结点的指针域置为第一个结点的地址 (a 0 所 在结点的地址 ) 从表中任一结点出发, 可访问表中所有结点 2.的实现

90 课堂练习 1 已知一个带头结点的单链表, 假如该链表只给出了头指针 L, 在不改变链表的前提下设计一个算法 : 查找链表中 倒数 第 k(k 为正整数 ) 个结点, 若查找成功, 输出该结点的 data 值, 并返回 1; 否则, 返回 0 要求 : (1) 描述算法的基本设计思想 (2) 描述算法的详细实现步骤 (3) 根据设计思想和实现步骤, 用程序设计语言描述算法 ( 使用 C 或 C++ 或 Java 语言实现 ), 关键之处请给出简要注释 2.的实现 全国统考 2009

91 课堂练习 1 解析 : (1) 基本思想 : 从头至尾遍历单链表, 用指针 P 指向当前结点的前 k 个结点 当遍历到链表最后一个结点时, P 指向的结点恰为所查找结点 (2) 实现步骤 : 两个指针变量 P 和 P1, 一个整型变量 i 链表从头开始遍历 P1 指向当前遍历的结点,P 指向 P1 所指向的结点的前 k 个结点 若 P1 前没有 k 个结点, 则 P 指向表头结点 i 表示当前遍历的结点个数, 当 i>k 时, P 随着 P1 的前进而前进 当遍历完成时,P 或者指向表头, 或者指向倒数第 k 个结点 2.的实现

92 课堂练习 1 (3) 算法描述 : int LocateElement(linklist list, int k){ P1=list->next; P=list; i=1; while(p1){ P1=P1->next; i++; if(i>k) p=p->next; 2.的实现

93 课堂练习 1 if(p==list) return 0; else{ printf( %d\n, p->data); return 1; 2.的实现

94 课堂练习 2 假定采用带头结点的单链表保存单词, 当两个单词有 相同的后缀时, 则可以共享相同的后缀存储空间 例 如, loading 和 being 的存储映像如图所示 : 2.的实现

95 课堂练习 2 设 str1 和 str2 分别指向两个单词所在单链表的头结点, 请设计一个时间上尽可能高效的算法, 找出由 str1 和 str2 所指的两个链表共同后缀的起始位置 ( 图中字符 i 所在的结点 p) 要求: (1) 给出算法的基本设计思想 (2) 根据设计思想, 用 C 或 C++ 或 Java 语言描述算法, 关键之处给出注释 (3) 说明所设计算法的时间复杂度 全国统考 的实现

96 课堂练习 2 解析 : (1) 算法的基本设计思想 : 第一步 : 分别求出 str1 和 str2 所指的两个链表的长度 m 和 n 第二步 : 将两个表以表尾对齐 : 令指针 p q 分别指向 str1 和 str2 的头结点, 若 m n, 则使 p 指向链表中 m-n+1 个结点 ; 若 m < n, 则 q 指向链表中 n-m+1 个结点, 即使指针 p 和 q 所指的结点到表尾长度相等 ( 其中之一指向开始位置 ) 第三步 : 反复将指针 p 和 q 同步向后移动, 并判断它们是否指向同一结点 2.的实现

97 课堂练习 2 (2) 算法实现 : typedef struct Node{ char data; struct Node *next; SNODE; 2.的实现

98 课堂练习 2 (2) 算法实现 : int listlen(snode* head){ int len=0; while(head->next!= NULL){ len++; head=head->next; return len; 2.的实现

99 课堂练习 2 (2) 算法实现 : SNODE *findlist(snode *str1, SNODE *str2){ int m, n; SNODE *p, *q; m=listlen(str1);//o(m) n=listlen(str2);//o(n) 2.的实现

100 课堂练习 2 // 下面三个循环 O(max(m, n)) for(p=str1;m>n;m- -) p=p->next; for(q=str2;m<n;n- -) q=q->next; while(p->next!= NULL && p->next!= q->next){ p = p->next; q = q->next; return p->next; (3) 算法的时间复杂度为 :O(m+n) 2.的实现

101 前情提要 线性表 顺序表链表 单链表 带表头结点的单链表 单循环链表 重点关注插入 删除操作及其运行效率 2.的实现

102 双向链表 各种单链表上的插入和删除操作 必须从头结点开始沿链查找 时间复杂度? 2.的实现

103 双向链表 各种单链表上的插入和删除操作必须从头结点开始沿链查找时间复杂度 O(n) 有时需要逆向访问继续进化 : 单链表 双向链表添加了 llink 指针 2.的实现

104 双向链表的结点类 template<class T> class DoubleList; template<class T> class DNode { private: T element; DNode<T> *llink, *rlink; friend DoubleList<T>; ; 2.的实现

105 双向链表 2.1 线性表的定义和 基本操作 如图所示为带表头结点的双向循环链表 : 2.的实现

106 双向链表的插入操作 核心步骤 : DNode<T> *q=new DNode<T>; q->element=x; q->llink=p->llink; q->rlink=p; p->llink->rlink=q; p->llink=q; 2.的实现

107 双向链表的删除操作 核心步骤 : p->llink->rlink=p->rlink; p->rlink->llink=p->llink; delete p; 2.的实现

108 静态链表 链表的数组描述 ( 如果高级程序设计语言没有 指针 类型 ) 数组的每个元素对应于链表中的一个结点 struct SNode{ ELEMTYPE element; int next; 2.的实现

109 静态链表 数组的第 0 个元素看成是表头结点, 其 next 指向链表的第 1 个结点最后一个结点的 next 为 0 线性表 (20, 25, 12, 15) 的表示如下 : 2.的实现

110 静态链表 类似顺序表, 需要预先分配较大的存储空间插入 删除操作时, 不需要移动元素, 只需要修改 指针 ( 下标 ) 例如, 在元素 25 之后插入新元素 9 2.的实现

111 静态链表 new 和 delete 需要自己实现 将未被使用的以及被删除的单元用下标链成 空闲链 表 2.的实现

112 线性表的应用 多项式的算术运算 围绕一元整系数多项式展开讨论 ( 降幂排列 ) 表示类定义算术运算的实现 p(x) = 3x 14 8x 8 + 6x 的实现 每一项均可表示为 coef x exp

113 多项式的算术运算 一个多项式可以看成是由 n 个元素组成的线性表表中元素为多项式中的各项 (coef,exp) 采用何种存储方式的线性表? p(x) = 3x 14 8x 8 + 6x 2 + 2, q(x) = 2x x 8 6x 2 2.的实现 q(x) q(x) + p(x) 链接存储! 频繁插入 删除操作这里采用带表头结点的单循环链表

114 多项式的算术运算 2.1 线性表的定义和 基本操作 2.的实现

115 前情提要 线性表 顺序表链表 单链表 带表头结点的单链表 单循环链表 双向链表 静态链表 重点关注插入 删除操作及其运行效率 2.的实现

116 多项式的算术运算 2.1 线性表的定义和 基本操作 2.的实现

117 项结点的 C++ 类 class Term { public: Term(int c, int e); Term(int c, int e, Term* nxt); Term* InsertAfter(int c, int e); 2.的实现

118 项结点的 C++ 类 private: int coef; int exp; Term *link; friend std::ostream & operator<<(std::ostream &, const Term &); friend class Polynominal; ; 2.的实现

119 项结点 C++ 类的实现 Term::Term(int c, int e) : coef(c), exp(e) { link = 0; Term::Term(int c, int e, Term* nxt) : coef(c), exp(e) { link = nxt; 2.的实现

120 项结点 C++ 类的实现 构造一个新的项结点, 系数为 c, 指数为 e, 并将新节点插入调用该函数的项结点及其后继结点之间 Term* Term::InsertAfter(int c, int e) { link = new Term(c, e, link); return link; 2.的实现

121 q1->insertafter(3, 14); 2.1 线性表的定义和 基本操作 2.的实现

122 项结点 C++ 类的实现 std::ostream &operator<<(std::ostream & out, const Term& val) { if (val.coef == 0) return out; if (!((val.coef == 1 val.coef == -1) && val.exp!= 0)){// Caution: for 1Xˆe and -1Xˆe, this is different from the textbook! out << val.coef; else if (val.coef == -1) out << - ; 2.的实现

123 项结点 C++ 类的实现 switch (val.exp) { case 0:break; case 1:out << X ; break; default: out << Xˆ << val.exp; break; break; return out; 2.的实现

124 多项式的 C++ 类 class Polynominal { public: Polynominal(); Polynominal(); void AddTerms(std::istream& in); void Output(std::ostream& out) const; void PolyAdd(Polynominal& r); 2.的实现

125 多项式的 C++ 类 private: Term* thelist; friend std::ostream & operator << (std::ostream &, const Polynominal &); friend std::istream& operator >> (std::istream&, Polynominal &); friend Polynominal& operator + (Polynominal &, Polynominal &); ; 2.的实现

126 多项式类的实现 : 构造和析构函数 Polynominal::Polynominal() { thelist = new Term(0, -1); thelist->link = thelist; 2.的实现

127 多项式类的实现 : 构造和析构函数 Polynominal:: Polynominal() { Term* p = thelist->link; while (p!= thelist) { thelist->link = p->link; delete p; p = thelist->link; delete thelist; 2.的实现

128 多项式类的实现 : 输入和输出 教材第 31 页第 2 行印刷错误,(0, 1) (0, -1) void Polynominal::AddTerms(std::istream& in) { Term* q = thelist; int c, e; 2.的实现

129 多项式类的实现 : 输入和输出 for (;;) { //std::cout << Input a term (coef, exp):\n << std::endl; std::cin >> c >> e; if (e < 0) break; q = q->insertafter(c, e); 2.的实现

130 多项式类的实现 : 输入和输出 void Polynominal::Output(std::ostream& out) const { int first = 1; Term *p = thelist->link; //std::cout << The polynominal is:\n << std::endl; if (p == thelist){// Caution: for empty polynomial, you should output a 0, and this is different from the textbook! out << 0 ; return; 2.的实现

131 多项式类的实现 : 输入和输出 for (; p!= thelist; p = p->link) { if (!first && (p->coef > 0)) out << + ; first = 0; out << *p; std::cout << std::endl; 2.的实现

132 多项式类的实现 : 多项式相加 q(x) q(x) + p(x) p 和 q 初始分别指向两多项式的最高次结点,q1 指向 q 的前驱结点 对 p(x) 进行遍历 : 若 p->exp < q->exp,q 指示的项为最终相加结果中的一项,p 不动,q 和 q1 右移若 p->exp == q->exp, 系数相加 结果不为零, 则 q 和 q1 右移, 否则从 q(x) 中删除 q 指示的结点,p 右移若 p->exp > q->exp, 则复制 p 所指示的结点, 并将其插入 q1 之后,p 右移 2.的实现

133 多项式类的实现 : 多项式相加 void Polynominal::PolyAdd(Polynominal& r) { Term* q, *q1 = thelist, *p; p = r.thelist->link; q = q1->link; while (p->exp >= 0) { while (p->exp < q->exp) { q1 = q; q = q->link; 2.的实现

134 多项式类的实现 : 多项式相加 if (p->exp == q->exp){ q->coef = q->coef + p->coef; if (q->coef == 0){ q1->link = q->link; delete(q); q = q1->link; else{ q1 = q; q = q->link; 2.的实现

135 多项式类的实现 : 多项式相加 else q1 = q1->insertafter(p->coef, p->exp); p = p->link; 2.的实现

136 多项式类的实现 : 友元函数 std::ostream& operator <<(std::ostream &out, const Polynominal &x){ x.output(out); return out; std::istream& operator >>(std::istream& in, Polynominal &x){ x.addterms(in); return in; 2.的实现

137 多项式类的实现 : 友元函数 Polynominal& operator +(Polynominal &a, Polynominal &b){ a.polyadd(b); return a; 2.的实现

138 主函数 int main() { Polynominal p, q; std::cin >> p; std::cout << p; std::cin >> q; std::cout << q; q = q + p; std::cout << q; return 0; 2.的实现

139 2.1 线性表的定义和 基本操作 2.的实现

2.3 链表

2.3  链表 数据结构与算法 ( 二 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) https://pkumooc.coursera.org/bdsalgo-001/ 第二章线性表 2.1 线性表 2.2 顺序表 tail head a 0 a 1 a n-1 2.4 顺序表和链表的比较 2 链表 (linked list) 通过指针把它的一串存储结点链接成一个链

More information

Microsoft Word - 专升本练习2:线性表.doc

Microsoft Word - 专升本练习2:线性表.doc 第二章 线性表 一 选择题 1. 线性表是 ( ) A. 一个有限序列, 可以为空 B. 一个有限序列, 不能为空 C. 一个有限序列, 可以为空 D. 一个无序序列, 不能为空 2. 对顺序存储的线性表, 设其长度为 n, 在任何位置上插入或删除操作都是等概率 插入一个元素 时大约要移动表中的 ( ) 个元素, 删除一个元素时大约要移动表中的 ( ) 个元素 A. n/2 B. (n+1)/2 C.

More information

Microsoft PowerPoint - 2线性表.ppt [兼容模式]

Microsoft PowerPoint - 2线性表.ppt [兼容模式] 2 线性表 董洪伟 http://hwdong.com 1 主要内容 线性表的类型定义 即抽象数据类型 顺序实现 即用一连续的存储空间来表示 链式实现 即用链表实现 一元稀疏多项式 链表实现 2 线性表的类型定义 线性表 n 个元素的有限序列 数据项 元素 ( 记录 ) 姓名 学号 性别 年龄 班级 健康状况 王小林 790631 男 18 计 91 健康 陈红 790632 女 20 计 91 一般

More information

ebook39-5

ebook39-5 5 3 last-in-first-out, LIFO 3-1 L i n e a r L i s t 3-8 C h a i n 3 3. 8. 3 C + + 5.1 [ ] s t a c k t o p b o t t o m 5-1a 5-1a E D 5-1b 5-1b E E 5-1a 5-1b 5-1c E t o p D t o p D C C B B B t o p A b o

More information

2

2 孙猛 http://www.math.pku.edu.cn/teachers/sunm 2017 年 9 月 18 日 课程主 页 : http://www.math.pku.edu.cn/teachers/sunm/ds2017/ 作业通过 course.pku.edu.cn 提交 2 线性表的概念和抽象数据类型 顺序表示 链接表示 3 4 线性表 ( 简称为表 ) 是零个或多个元素的有穷序列列

More information

Microsoft PowerPoint - Slides03_第二章 线性表.ppt [兼容模式]

Microsoft PowerPoint - Slides03_第二章 线性表.ppt [兼容模式] 第二章线性表 定义 基本操作 实现 顺序存储 链式存储 应用 多项式 线性表 (Linear List) 定义 线性表是 n ( 0) 个数据元素的有限序列, 记作 (a 1, a 2,, a n ) a i 是表中数据元素,n 是表长度 假定 : 各元素的数据类型相同 原则上 : 线性表中, 表元素的数据类型可以不相同 采用的存储表示可能会对元素的数据类型有限制 特点 除第一个元素外, 其他每一个元素有一个且仅有一个直接前驱

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

C++ 程序设计 OJ4 - 参考答案 MASTER 2017 年 5 月 21 日 1

C++ 程序设计 OJ4 - 参考答案 MASTER 2017 年 5 月 21 日 1 C++ 程序设计 OJ4 - 参考答案 MASTER 2017 年 5 月 21 日 1 1 SWAP 1 Swap 题目描述 用函数模板的方式实现对不同数据类型的数组中的数据进行输入 从小到大排序和输出 使用如下主函数测试你的模板设计一个函数模板 Swap, 实现任意数据类型的两个数据的交换, 分别用 int 型 double 型和 char 型的数据进行测试 main 函数如下 : int main()

More information

C++ 程序设计 OJ4 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 OJ4 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 OJ4 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 MYQUEUE 1 MyQueue 题目描述 设计一个 MyQueue 类模板, 类模板说明如下 : template class MyQueue; template std::ostream & operator

More information

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1 C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1 1 CARDGAME 1 CardGame 题目描述 桌上有一叠牌, 从第一张牌 ( 即位于顶面的牌 ) 开始从上往下依次编号为 1~n 当至少还剩两张牌时进行以下操作 : 把第一张牌扔掉, 然后把新的第一张放到整叠牌的最后 请模拟这个过程, 依次输出每次扔掉的牌以及最后剩下的牌的编号 输入 输入正整数 n(n

More information

ebook39-6

ebook39-6 6 first-in-first-out, FIFO L i n e a r L i s t 3-1 C h a i n 3-8 5. 5. 3 F I F O L I F O 5. 5. 6 5. 5. 6.1 [ ] q u e n e ( r e a r ) ( f r o n t 6-1a A 6-1b 6-1b D C D 6-1c a) b) c) 6-1 F I F O L I F ADT

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

Microsoft Word - 数据结构实训与习题725xdy.doc

Microsoft Word - 数据结构实训与习题725xdy.doc 第一部分学习指导与实训 3 第 2 章线性表 2.1 学习指南 (1) 理解线性表的类型定义, 掌握顺序表和链表的结构差别 (2) 熟练掌握顺序表的结构特性, 熟悉顺序表的存储结构 (3) 熟练掌握顺序表的各种运算, 并能灵活运用各种相关操作 (4) 熟练掌握链式存储结构特性, 掌握链表的各种运算 2.2 内容提要 线性表的特点 : 线性表由一组数据元素构成, 表中元素属于同一数据对象 在线性表中,

More information

Microsoft PowerPoint - 第+2+章+线性表[check].ppt [兼容模式]

Microsoft PowerPoint - 第+2+章+线性表[check].ppt [兼容模式] 教学内容 1 线性表的定义和性质及基本运算 2 线性表的顺序存储结构 3 线性表的链式存储结构 4 多项式的代数运算 线性结构的特点 : 数据元素的非空有限集 存在唯一的一个被称作 第一个 的数据元素 ; 存在唯一的一个被称作 最后一个 的数据元素 ; 除第一个之外的数据元素均只有一个前驱 ; 除最后一个之外的数据元素均只有一个后继 例 : 法学系 8523101 第一个 数据元素 国贸系 8522105

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

PowerPoint Presentation

PowerPoint Presentation 数据结构与算法 ( 二 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) https://pkumooc.coursera.org/bdsalgo-001/ 第二章 线性表 第二章线性表 2.1 线性表 2.2 顺序表 2.3 链表 {a 0, a 1,, a n 1 } a 0 a 1 a 2 a n-1 tail head a

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

没有幻灯片标题

没有幻灯片标题 指针作为函数参数 : 原因 : 1 需要修改一个或多个值,( 用 return 语句不能解决问题 ) 2 执行效率的角度 使用方法 : 在函数原型以及函数首部中需要声明能够接受指针值的形参, 具体的写法为 : 数据类型 * 形参名 如果有多个指针型形参, 则用逗号分隔, 例如 : void swap(int *p1, int *p2) 它说明了形参 p1 p2 是指向整型变量的指针 在函数调用时,

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式] Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];

More information

PowerPoint Presentation

PowerPoint Presentation 数据结构与算法 ( 六 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) http://www.jpk.pku.edu.cn/pkujpk/course/sjjg 第 6 章树 C 树的定义和基本术语 树的链式存储结构 子结点表 表示方法 静态 左孩子 / 右兄弟 表示法 动态表示法 动态 左孩子 / 右兄弟 表示法 父指针表示法及其在并查集中的应用

More information

Chapter12 Derived Classes

Chapter12   Derived Classes 继 承 -- 派 生 类 复 习 1. 有 下 面 类 的 说 明, 有 错 误 的 语 句 是 : class X { A) const int a; B) X(); C) X(int val) {a=2 D) ~X(); 答 案 :C 不 正 确, 应 改 成 X(int val) : a(2) { 2. 下 列 静 态 数 据 成 员 的 特 性 中, 错 误 的 是 A) 说 明 静 态 数

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

Microsoft PowerPoint - ds-1.ppt [兼容模式]

Microsoft PowerPoint - ds-1.ppt [兼容模式] http://jwc..edu.cn/jxgl/ HomePage/Default.asp 2 说 明 总 学 时 : 72( 学 时 )= 56( 课 时 )+ 16( 实 验 ) 行 课 时 间 : 第 1 ~14 周 周 学 时 : 平 均 每 周 4 学 时 上 机 安 排 待 定 考 试 时 间 : 课 程 束 第 8 11 12 章 的 内 容 为 自 学 内 容 ; 目 录 中 标 有

More information

Microsoft PowerPoint - string_kruse [兼容模式]

Microsoft PowerPoint - string_kruse [兼容模式] Strings Strings in C not encapsulated Every C-string has type char *. Hence, a C-string references an address in memory, the first of a contiguous set of bytes that store the characters making up the string.

More information

untitled

untitled 3 C++ 3.1 3.2 3.3 3.4 new delete 3.5 this 3.6 3.7 3.1 3.1 class struct union struct union C class C++ C++ 3.1 3.1 #include struct STRING { typedef char *CHARPTR; // CHARPTR s; // int strlen(

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc Java C++ Pascal C# C# if if if for while do while foreach while do while C# 3.1.1 ; 3-1 ischeck Test() While ischeck while static bool ischeck = true; public static void Test() while (ischeck) ; ischeck

More information

untitled

untitled 1 7 7.1 7.2 7.3 7.4 7.5 2 7.1 VFT virtual 7.1 3 1 1. 2. public protected public 3. VFT 4. this const volatile 4 2 5. ( ) ( ) 7.1 6. no-static virtual 7.2 7. inline 7.3 5 3 8. this this 9. ( ) ( ) delete

More information

数据结构 Data Structure

数据结构 Data Structure 数据结构 : 线性表 Data Structure 2016 年 3 月 15 日星期二 1 线性表 栈和队列 线性表 字典 ADT 栈 队列 2016 年 3 月 15 日星期二 2 线性表 定义 : 线性表 L 是 n 个数据元素 a 0,a 1, a n-1 的有限序列, 记作 L=(a 0,a 1, a n-1 ) 其中元素个数 n(n 0) 定义为表 L 的长度 当 n=0 时,L 为空表,

More information

Microsoft PowerPoint - ds_2.ppt

Microsoft PowerPoint - ds_2.ppt 第二章线性表 2.1 线性表的概念 2.2 顺序表示 2.3 链接表示 2.4 应用举例 -Josehus 问题另外介绍 动态顺序表 程序里常需要保存一批某种类型的元素, 这些元素的数目可能变化 ( 可以加入或删除元素 ) 有时需要把这组元素看成一个序列, 元素的顺序可能表示实际应用中的某种有意义的关系这样一组元素可以抽象为元素的一个线性表 线性表是元素的集合, 同时记录了元素的顺序关系 线性表是一种最基本的数据结构,

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

Microsoft PowerPoint - DS_Ch2.ppt [兼容模式]

Microsoft PowerPoint - DS_Ch2.ppt [兼容模式] 数据结构 Ch.2 线性表 计算机学院 肖明军 Email: xiaomj@ustc.edu.cn http://staff.ustc.edu.cn/~xiaomj 2.1 线性表的逻辑结构 线性表 : 由 n(n 0) 个结点 a 1,, a n 组成的有限序列 记作 :L = (a 1, a 2,, a n ), 属性 : 长度 ---- 结点数目 n,n=0 时为空表 a i ---- 一般是同一类型

More information

extend

extend (object oriented) Encapsulation Inheritance Polymorphism Dynamic Binding (base class) (derived class) 1 class Base { int I; void X(); void Y(); class Derived: public Base { private: int j; void z(); Derived

More information

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf (%d, & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf (%d %d 2013 18 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp, Compilation Error cin scanf Time Limit Exceeded 1: A 5 B 5 C 5 D 5 E 5 F 5 1 2013 C 1 # include 2 int main ( void ) 3 { 4 int cases, a, b,

More information

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF> 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 考 试 2009 年 上 半 年 软 件 设 计 师 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 请 按 下 述 要 求 正 确 填 写 答 题 纸 1. 在 答 题 纸 的 指 定 位 置 填 写 你 所 在 的 省 自 治 区 直 辖 市 计 划 单 列 市 的 名 称 2. 在 答

More information

2013 C 1 #include <stdio.h> 2 int main(void) 3 { 4 int cases, i; 5 long long a, b; 6 scanf("%d", &cases); 7 for (i = 0; i < cases; i++) 8 { 9 scanf("%

2013 C 1 #include <stdio.h> 2 int main(void) 3 { 4 int cases, i; 5 long long a, b; 6 scanf(%d, &cases); 7 for (i = 0; i < cases; i++) 8 { 9 scanf(% 2013 ( 28 ) ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp Compilation Error long long cin scanf Time Limit Exceeded 1: A 10 B 1 C 1 D 5 E 5 F 1 G II 5 H 30 1 2013 C 1 #include 2 int main(void) 3

More information

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074> 程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 pengxin@fudan.edu.cn 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学

More information

全国计算机技术与软件专业技术资格(水平)考试

全国计算机技术与软件专业技术资格(水平)考试 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2008 年 上 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 试 题 一 ( 共 15 分 ) 阅 读 以 下 说 明 和 流 程 图, 填 补 流 程 图 中 的 空 缺 (1)~(9), 将 解 答 填 入 答 题 纸 的 对 应 栏 内 [ 说 明

More information

全国计算机技术与软件专业技术资格(水平)考试

全国计算机技术与软件专业技术资格(水平)考试 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2009 年 下 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 请 按 下 述 要 求 正 确 填 写 答 题 纸 1. 在 答 题 纸 的 指 定 位 置 填 写 你 所 在 的 省 自 治 区 直 辖 市 计 划 单 列 市 的 名 称 2. 在 答

More information

上海交通大学

上海交通大学 一 读程序, 写结果 ( 每题 4 分, 共 40 分 ) 1. 写出下列程序运行结果 class test friend test operator+(const test &p1, const test &p2) return test(p1.data1 + p2.data1, p1.data2 + p2.data2); friend ostream &operator

More information

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx 运算符重载 Operator Overloading class Point { public: ; double x_, y_; Why Operator Overloading? Point (double x =0, double y = 0):x_(x),y_(y) { int main(){ Point a(1., 2), b(3,4); Point c = a + b; return 0;

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

C/C++ - 字符输入输出和字符确认

C/C++ - 字符输入输出和字符确认 C/C++ Table of contents 1. 2. getchar() putchar() 3. (Buffer) 4. 5. 6. 7. 8. 1 2 3 1 // pseudo code 2 read a character 3 while there is more input 4 increment character count 5 if a line has been read,

More information

untitled

untitled 1 Outline 流 ( ) 流 ( ) 流 ( ) 流 ( ) 流 ( ) 狀 流 ( ) 利 來 行流 if () 立 行 ; else 不 立 行 ; 例 sample2-a1 (1) 列 // 料 Console.Write(""); string name = Console.ReadLine(); Console.WriteLine(" " + name + "!!"); 例 sample2-a1

More information

c_cpp

c_cpp C C++ C C++ C++ (object oriented) C C++.cpp C C++ C C++ : for (int i=0;i

More information

新・解きながら学ぶC言語

新・解きながら学ぶC言語 330!... 67!=... 42 "... 215 " "... 6, 77, 222 #define... 114, 194 #include... 145 %... 21 %... 21 %%... 21 %f... 26 %ld... 162 %lf... 26 %lu... 162 %o... 180 %p... 248 %s... 223, 224 %u... 162 %x... 180

More information

第3章.doc

第3章.doc 3 3 3 3.1 3 IT Trend C++ Java SAP Advantech ERPCRM C++ C++ Synopsys C++ NEC C C++PHP C++Java C++Java VIA C++ 3COM C++ SPSS C++ Sybase C++LinuxUNIX Motorola C++ IBM C++Java Oracle Java HP C++ C++ Yahoo

More information

C/C++语言 - 运算符、表达式和语句

C/C++语言 - 运算符、表达式和语句 C/C++ Table of contents 1. 2. 3. 4. C C++ 5. 6. 7. 1 i // shoe1.c: # include # define ADJUST 7. 64 # define SCALE 0. 325 int main ( void ) { double shoe, foot ; shoe = 9. 0; foot = SCALE * shoe

More information

untitled

untitled 1 1.1 1.2 1.3 1.4 1.5 ++ 1.6 ++ 2 BNF 3 4 5 6 7 8 1.2 9 1.2 IF ELSE 10 1.2 11 1.2 12 1.3 Ada, Modula-2 Simula Smalltalk-80 C++, Objected Pascal(Delphi), Java, C#, VB.NET C++: C OOPL Java: C++ OOPL C# C++

More information

第三章 栈和队列

第三章  栈和队列 第 3 章栈 3.1 ADT 栈 3.2 ADT 栈的实现 3.3 ADT 栈的应用 2008-3-31 福州大学数学与计算机科学学院吴英杰 1 1 栈的定义和特点 3.1 ADT 栈 (stack) 定义 : 限定仅在表首进行插入或删除操作的线性表, 表首 栈顶, 表尾 栈底, 不含元素的空表称空栈 特点 : 先进后出 (FILO) 或后进先出 (LIFO) 进栈栈顶... an... 出栈 栈

More information

目 录 目 录 前言 第 章 绪论 知识点串讲 典型例题详解 课后习题与解答 第 章 线性表 知识点串讲 典型例题详解 课后习题与解答 第 章 栈和队列 知识点串讲 典型例题详解 课后习题与解答 第 章 串 知识点串讲 典型例题详解 课后习题与解答 第 章 数组和广义表 知识点串讲 典型例题详解 课

目 录 目 录 前言 第 章 绪论 知识点串讲 典型例题详解 课后习题与解答 第 章 线性表 知识点串讲 典型例题详解 课后习题与解答 第 章 栈和队列 知识点串讲 典型例题详解 课后习题与解答 第 章 串 知识点串讲 典型例题详解 课后习题与解答 第 章 数组和广义表 知识点串讲 典型例题详解 课 数据结构 语言版 例题详解与课程设计指导 主 编 秦 锋 袁志祥副主编 陈学进 王森玉郑 啸 程泽凯 合肥 目 录 目 录 前言 第 章 绪论 知识点串讲 典型例题详解 课后习题与解答 第 章 线性表 知识点串讲 典型例题详解 课后习题与解答 第 章 栈和队列 知识点串讲 典型例题详解 课后习题与解答 第 章 串 知识点串讲 典型例题详解 课后习题与解答 第 章 数组和广义表 知识点串讲 典型例题详解

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

untitled

untitled A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (

More information

Microsoft PowerPoint - DS_Ch2_EN [兼容模式]

Microsoft PowerPoint - DS_Ch2_EN [兼容模式] Data Structure Ch.2 Linear List Dr. He Emil Huang School of Computer Science and Technology Soochow University 苏州大学计算机科学与技术学院网络工程系 本章 ppt 与教材对应情况 本章涉及所有内容涵盖了教材以下章节 P212~P233 6.1 (List definition 表的定义 )

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

C++ 程序设计 OJ10 - 参考答案 MASTER 2019 年 6 月 17 日 1

C++ 程序设计 OJ10 - 参考答案 MASTER 2019 年 6 月 17 日 1 C++ 程序设计 OJ10 - 参考答案 MASTER 2019 年 6 月 17 日 1 1 STRINGREVERSE 1 StringReverse 题目描述 利用 string 类对字符串进行 ( 按反转后字典序 ) 排序并输出, 例如两个字符串为 aab, cba, 则 cba 应该排在 aab 之前, 因为 cba 反转后为 abc, aab 反转后为 baa. 输入 第一行为一个整数

More information

提问袁小兵:

提问袁小兵: C++ 面 试 试 题 汇 总 柯 贤 富 管 理 软 件 需 求 分 析 篇 1. STL 类 模 板 标 准 库 中 容 器 和 算 法 这 部 分 一 般 称 为 标 准 模 板 库 2. 为 什 么 定 义 虚 的 析 构 函 数? 避 免 内 存 问 题, 当 你 可 能 通 过 基 类 指 针 删 除 派 生 类 对 象 时 必 须 保 证 基 类 析 构 函 数 为 虚 函 数 3.

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf (%d, & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9 201 201 21 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp Compilation Error long long cin scanf Time Limit Exceeded 1: A 1 B 1 C 5 D RPG 10 E 10 F 1 G II 1 1 201 201 C 1 # include 2 int main ( void

More information

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 TEMPLATE 1 Template 描述 使用模板函数求最大值 使用如下 main 函数对程序进行测试 int main() { double a, b; cin >> a >> b; cout c >> d; cout

More information

Strings

Strings Inheritance Cheng-Chin Chiang Relationships among Classes A 類 別 使 用 B 類 別 學 生 使 用 手 機 傳 遞 訊 息 公 司 使 用 金 庫 儲 存 重 要 文 件 人 類 使 用 交 通 工 具 旅 行 A 類 別 中 有 B 類 別 汽 車 有 輪 子 三 角 形 有 三 個 頂 點 電 腦 內 有 中 央 處 理 單 元 A

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

新版 明解C言語入門編

新版 明解C言語入門編 328, 4, 110, 189, 103, 11... 318. 274 6 ; 10 ; 5? 48 & & 228! 61!= 42 ^= 66 _ 82 /= 66 /* 3 / 19 ~ 164 OR 53 OR 164 = 66 ( ) 115 ( ) 31 ^ OR 164 [] 89, 241 [] 324 + + 4, 19, 241 + + 22 ++ 67 ++ 73 += 66

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

untitled

untitled CHAPTER 02 2 CHAPTER 2-1 2-4 2-2 2-5 2-3 2-6 2-1 2-1-1 2-2 02 int A[3] = {10, 20, 30; A[0] 10 A[1] 20 A[2] 30 int *pa[3], A[3]; C 3 pa pa[0]pa[1]pa[2] 3 A A[0]A[1]A[2] 3 A A[0] A + i A[i] A + i &A[i]*(A

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc 2 5 8 11 0 13 1. 13 2. 15 3. 18 1 23 1. 23 2. 26 3. 28 2 36 1. 36 2. 39 3. 42 4. 44 5. 49 6. 51 3 57 1. 57 2. 60 3. 64 4. 66 5. 70 6. 75 7. 83 8. 85 9. 88 10. 98 11. 103 12. 108 13. 112 4 115 1. 115 2.

More information

内 容 提 要 指 针 持 久 动 态 内 存 分 配 字 符 串 ( 字 符 数 组 ) 2

内 容 提 要 指 针 持 久 动 态 内 存 分 配 字 符 串 ( 字 符 数 组 ) 2 第 六 讲 指 针 与 字 符 串 1 内 容 提 要 指 针 持 久 动 态 内 存 分 配 字 符 串 ( 字 符 数 组 ) 2 指 针 什 么 是 指 针 指 针 的 定 义 与 运 算 指 针 与 一 维 数 组 指 针 数 组 行 指 针 与 二 维 数 组 指 针 与 引 用 指 针 与 函 数 3 指 针 定 义 什 么 是 指 针 指 针 变 量, 简 称 指 针, 用 来 存 放

More information

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3 浙江大学 C 程序设计及实验 试题卷 2002-2003 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:30-10:30 注意 : 答题内容必须写在答题卷上, 写在本试题卷上无效 一. 单项选择题 ( 每题 1 分, 共 10 分 ) 1. 下列运算符中, 优先级最低的是 A.

More information

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式] 指针 Pointers 变量指针与指针变量 Pointer of a variable 变量与内存 (Variables and Memory) 当你声明一个变量时, 计算机将给该变量一个内存, 可以存储变量的值 当你使用变量时, 计算机将做两步操作 : - 根据变量名查找其对应的地址 ; - 通过地址对该地址的变量内容进行读 (retrieve) 或写 (set) 变量的地址称为变量的指针! C++

More information

Microsoft PowerPoint - 1绪论.ppt [兼容模式]

Microsoft PowerPoint - 1绪论.ppt [兼容模式] 1 绪论 董洪伟 http://hwdong.com 主要内容 什么是数据结构 定义 内容 基本术语 数据 : 数据对象 数据元素 数据项 数据结构 : 逻辑结构 物理结构 抽象数据类型 定义 表示 算法和算法分析 算法的概念 算法复杂度 什么是数据结构 程序 = 数据结构 + 算法 Pascal 之父,Niklaus Wirth 数据结构 : 问题的数学模型 数据表示 算法 : 处理问题的策略 数据处理

More information

C/C++语言 - 分支结构

C/C++语言 - 分支结构 C/C++ Table of contents 1. if 2. if else 3. 4. 5. 6. continue break 7. switch 1 if if i // colddays.c: # include int main ( void ) { const int FREEZING = 0; float temperature ; int cold_ days

More information

Microsoft Word - ch04三校.doc

Microsoft Word - ch04三校.doc 4-1 4-1-1 (Object) (State) (Behavior) ( ) ( ) ( method) ( properties) ( functions) 4-2 4-1-2 (Message) ( ) ( ) ( ) A B A ( ) ( ) ( YourCar) ( changegear) ( lowergear) 4-1-3 (Class) (Blueprint) 4-3 changegear

More information

PowerPoint Presentation

PowerPoint Presentation 数据结构与算法 ( 三 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) http://www.jpk.pku.edu.cn/pkujpk/course/sjjg 第 3 章栈与队列 栈 栈的应用 递归到非递归的转换 队列 2 栈 (Stack) 操作受限的线性表 运算只在表的一端进行 队列 (Queue) 运算只在表的两端进行

More information

Microsoft Word - 第2章 线性表.docx

Microsoft Word - 第2章 线性表.docx 第 2 章线性表 学习目标 u 理解顺序表的逻辑与存储原理, 并能实现简单顺序表 u 掌握单链表的逻辑与存储原理, 并能实现单链表 u 掌握双向链表的逻辑与存储原理 u 掌握循环链表的逻辑与存储原理线性表, 顾名思义是像线一样性质的表, 它的用处多不胜数, 是最常用且最简单的一种数据结构, 例如, 一串英文字母 一队手拉手的小朋友 一份学生成绩单等等都可以用线性表表示 线性表的存储结构有顺序存储结构和链式存储结构两种,

More information

数据结构 Data Structure

数据结构 Data Structure 第三章 : 线性表 线性表 定义 : 线性表 L 是 n 个数据元素 a 0,a, a n- 的有限序列, 记作 L=(a 0,a, a n- ) 其中元素个数 n(n 0) 定义为表 L 的长度 当 n=0 时,L 为空表, 记作 ( ) 特性 : 在表中, 除第一个元素 a 0 外, 其他每一个元素 a i 有一个且仅有 一个直接前驱 a i- 除最后一个元素 a n- 外, 其他每一个元素 a

More information

C C

C C C C 2017 3 8 1. 2. 3. 4. char 5. 2/101 C 1. 3/101 C C = 5 (F 32). 9 F C 4/101 C 1 // fal2cel.c: Convert Fah temperature to Cel temperature 2 #include 3 int main(void) 4 { 5 float fah, cel; 6 printf("please

More information

试卷代号 :1075 座位号 rn 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期 " 开放本科 " 期末考试 c+ 十语言程序设计试题 2016 年 1 月 t 问一 Urr-f 斗 士 1 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new

试卷代号 :1075 座位号 rn 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期  开放本科  期末考试 c+ 十语言程序设计试题 2016 年 1 月 t 问一 Urr-f 斗 士 1 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new 试卷代号 :1075 座位号 rn 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期 " 开放本科 " 期末考试 c+ 十语言程序设计试题 2016 年 1 月 t 问一 Urr-f 斗 士 1 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. long 2. 在每个 C 十 + 程序中都必须包含有这样一个函数, 该函数的函数名为 ) A.main

More information

试卷代号 ~1075 座位号 E 口 国家开放大学 ( 中央广播电视大学 )20]5 年秋季学期 " 开放本科 " 期末考试 C 十十语言程序设计 试题 同二二十斗 2016 年 1 月 巴叫一 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. l

试卷代号 ~1075 座位号 E 口 国家开放大学 ( 中央广播电视大学 )20]5 年秋季学期  开放本科  期末考试 C 十十语言程序设计 试题 同二二十斗 2016 年 1 月 巴叫一 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. l 试卷代号 ~1075 座位号 E 口 国家开放大学 ( 中央广播电视大学 )20]5 年秋季学期 " 开放本科 " 期末考试 C 十十语言程序设计 试题 同二二十斗 2016 年 1 月 巴叫一 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. long 2. 在每个 c++ 程序中都必须包含有这样一个函数, 该函数的函数名为 ( ) A. main

More information

四 读算法 ( 每题 7 分, 共 14 分 ) 1. (1) 查询链表的尾结点 (2) 将第一个结点链接到链表的尾部, 作为新的尾结点 (3) 返回的线性表为 (a 2,a 3,,a n,a 1 ) 2. 递归地后序遍历链式存储的二叉树 五 法填空 ( 每空 2 分, 共 8 分 ) true B

四 读算法 ( 每题 7 分, 共 14 分 ) 1. (1) 查询链表的尾结点 (2) 将第一个结点链接到链表的尾部, 作为新的尾结点 (3) 返回的线性表为 (a 2,a 3,,a n,a 1 ) 2. 递归地后序遍历链式存储的二叉树 五 法填空 ( 每空 2 分, 共 8 分 ) true B 数据结构试卷 ( 一 ) 参考答案 一 选择题 ( 每题 2 分, 共 20 分 ) 1.A 2.D 3.D 4.C 5.C 6.D 7.D 8.C 9.D 10.A 二 填空题 ( 每空 1 分, 共 26 分 ) 1. 正确性 易读性 强壮性 高效率 2. O(n) 3. 9 3 3 4. -1 3 4 X * + 2 Y * 3 / - 5. 2n n-1 n+1 6. e 2e 7. 有向无回路

More information

C/C++ 语言 - 循环

C/C++ 语言 - 循环 C/C++ Table of contents 7. 1. 2. while 3. 4. 5. for 6. 8. (do while) 9. 10. (nested loop) 11. 12. 13. 1 // summing.c: # include int main ( void ) { long num ; long sum = 0L; int status ; printf

More information

Microsoft PowerPoint - DS_Ch5.ppt [兼容模式]

Microsoft PowerPoint - DS_Ch5.ppt [兼容模式] 数据结构 Ch.5 数组和广义表 计算机学院 肖明军 Email: xiaomj@ustc.edu.cn http://staff.ustc.edu.cn/~xiaomj 多维数组 是最易处理的非线性结构 因为各元素类型一致, 各维上下界固定, 所以它最容易线性化, 故可看做是线性表的拓广 例如 : 二维数组可以看做是由列向量组成的线性表 1. 结构特性 例 : 二维数组, 它属于两个向量 ;i th

More information

试卷代号 : 座位号 CD 中央广播电视大学 学年度第二学期 " 开放本科 " 期末考试 数据结构 ( 本 ) 试题 I 题号 - - I 二 l 三 l 四 l 总 分 分数 I I I I I I 2009 年 7 月 得分 评卷人 I I I 一

试卷代号 : 座位号 CD 中央广播电视大学 学年度第二学期  开放本科  期末考试 数据结构 ( 本 ) 试题 I 题号 - - I 二 l 三 l 四 l 总 分 分数 I I I I I I 2009 年 7 月 得分 评卷人 I I I 一 试卷代号 : 1 2 5 2 座位号 CD 中央广播电视大学 2 0 0 8-2 0 0 9 学年度第二学期 " 开放本科 " 期末考试 数据结构 ( 本 ) 试题 I 题号 - - I 二 l 三 l 四 l 总 分 分数 I I I I I I 2009 年 7 月 得分 评卷人 I I I 一 单项选择题 ( 每小题 2 分如 崎盯扫, 共 3t 3ω O 1. 针对线性表, 在存储后如果最常用的操作是取第

More information

02

02 Thinking in C++: Volume One: Introduction to Standard C++, Second Edition & Volume Two: Practical Programming C++ C C++ C++ 3 3 C C class C++ C++ C++ C++ string vector 2.1 interpreter compiler 2.1.1 BASIC

More information

untitled

untitled 1 DBF (READDBF.C)... 1 2 (filetest.c)...2 3 (mousetes.c)...3 4 (painttes.c)...5 5 (dirtest.c)...9 6 (list.c)...9 1 dbf (readdbf.c) /* dbf */ #include int rf,k,reclen,addr,*p1; long brec,erec,i,j,recnum,*p2;

More information

Strings

Strings Polymorphism and Virtual Functions Cheng-Chin Chiang Virtual Function Basics 多 型 (Polymorphism) 賦 予 一 個 函 數 多 種 意 涵, 存 在 於 同 一 類 別 之 內 祖 先 類 別 與 後 代 類 別 間 物 件 導 向 程 式 設 計 基 本 原 理 虛 擬 函 數 (Virtual Function)

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

IO

IO 1 C/C++ C FILE* fscanf fgets fread fprintf fputs fwrite C++ ifstream ofstream >>

More information

download.kaoyan.com_2006ÄêÌì½ò¹¤Òµ´óѧ¸ß¼¶ÓïÑÔ³ÌÐòÉè¼Æ£¨409£©¿¼ÑÐÊÔÌâ

download.kaoyan.com_2006ÄêÌì½ò¹¤Òµ´óѧ¸ß¼¶ÓïÑÔ³ÌÐòÉè¼Æ£¨409£©¿¼ÑÐÊÔÌâ 考生注意 : 本试卷共七大题, 满分 150 分 考试时间为 3 小时 ; 所有答案均写在答题纸上 ( 注明题号 ), 在此答题一律无效无效 一 选择题 ( 本题共 20 小题, 每小题 2 分, 满分 40 分 ) 1 char ch 1 2 A 0

More information

PowerPoint Presentation

PowerPoint Presentation 数据结构与算法 ( 六 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) http://www.jpk.pku.edu.cn/pkujpk/course/sjjg A 第 6 章树 B C 树的定义和基本术语 树的链式存储结构 子结点表 表示方法 静态 左孩子 / 右兄弟 表示法 动态表示法 动态 左孩子 / 右兄弟 表示法 父指针表示法及其在并查集中的应用

More information

C++ 程序设计 实验 3 - 参考答案 MASTER 2017 年 5 月 21 日 1

C++ 程序设计 实验 3 - 参考答案 MASTER 2017 年 5 月 21 日 1 C++ 程序设计 实验 3 - 参考答案 MASTER 2017 年 5 月 21 日 1 1 圆 1 圆 设计圆类 包含 包含基本属性和基本属性访问接口 计算面积和周长接口 2 1 圆 1 #include 2 using namespace std ; 3 c l a s s CCircle 4 { 5 p r i v a t e : 6 double r ; 7 const

More information

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2 PowerBuilder 9 PowerBuilder Native Interface(PBNI) PowerBuilder 9 PowerBuilder C++ Java PowerBuilder 9 PBNI PowerBuilder Java C++ PowerBuilder NVO / PowerBuilder C/C++ PowerBuilder 9.0 PowerBuilder Native

More information

CHAPTER VC#

CHAPTER VC# 1. 2. 3. 4. CHAPTER 2-1 2-2 2-3 2-4 VC# 2-5 2-6 2-7 2-8 Visual C# 2008 2-1 Visual C# 0~100 (-32768~+32767) 2 4 VC# (Overflow) 2-1 2-2 2-1 2-1.1 2-1 1 10 10!(1 10) 2-3 Visual C# 2008 10! 32767 short( )

More information

串 零个或多个字符组成的有限序列 将元素类型限制为字符线性表 具有相同类型的数据元素的有限序列 将元素类型扩充为线性表 ( 多维 ) 数组 线性表中的数据元素可以是线性表 2

串 零个或多个字符组成的有限序列 将元素类型限制为字符线性表 具有相同类型的数据元素的有限序列 将元素类型扩充为线性表 ( 多维 ) 数组 线性表中的数据元素可以是线性表 2 Array Zibin Zheng( 郑子彬 ) School of Data and Computer Science, SYSU http://www.inpluslab.com 课程主页 :http://inpluslab.sysu.edu.cn/dsa2016/ 串 零个或多个字符组成的有限序列 将元素类型限制为字符线性表 具有相同类型的数据元素的有限序列 将元素类型扩充为线性表 ( 多维

More information

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F 1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET 2.0 2.0.NET Framework.NET Framework 2.0 ( 3).NET Framework 2.0.NET Framework ( System ) o o o o o o Boxing UnBoxing() o

More information

《C语言程序设计》第2版教材习题参考答案

《C语言程序设计》第2版教材习题参考答案 教材 C 语言程序设计 ( 第 2 版 ) 清华大学出版社, 黄保和, 江弋编著 2011 年 10 月第二版 ISBN:978-7-302-26972-4 售价 :35 元 答案版本 本习题答案为 2012 年 2 月修订版本 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p = &a A. *p = *a B. p = *a C.p = &a D. *p =

More information

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p NOWOER.OM /++ 程师能 评估. 单项选择题 1. 下 描述正确的是 int *p1 = new int[10]; int *p2 = new int[10](); p1 和 p2 申请的空间 的值都是随机值 p1 和 p2 申请的空间 的值都已经初始化 p1 申请的空间 的值是随机值,p2 申请的空间 的值已经初始化 p1 申请的空间 的值已经初始化,p2 申请的空间 的值是随机值 2.

More information

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information