当前位置:
文档之家› 数据结构1.3 抽象数据类型及例题
数据结构1.3 抽象数据类型及例题
5)选择语句有 选择语句有 条件语句1 表达式) 条件语句 if(表达式 语句 表达式 语句; 条件语句2 表达式) 语句; 条件语句 if(表达式 语句 else 语句 表达式 语句; 开关语句1 表达式){ 开关语句 switch(表达式 表达式 case 值1:语句序列 语句序列1:break; 语句序列 …… case 值n:语句序列 语句序列n:break; 语句序列 default:语句序列 语句序列n+1;} 语句序列 开关语句2 值 换成”条件” 开关语句 “值”换成”条件”
抽象数据类型
• 抽象数据类型可通过固有数据类型来表示 和实现,即利用处理器中已存在的数据类型 和实现 即利用处理器中已存在的数据类型 来说明新的结构,用已经实现的操作来组合 来说明新的结构 用已经实现的操作来组合 新的操作. 新的操作 • 本书采用的类 语言精选了 语言的一个核 本书采用的类C语言精选了 语言精选了C语言的一个核 心子集,同时做了若干扩充修改 同时做了若干扩充修改,增强了语言 心子集,同时做了若干扩充修改,增强了语言 的描述功能. 的描述功能
11)逻辑运算约定 逻辑运算约定 与运算&&:对于 对于A&&B,当A的值为 时,不再 的值为0时 不再 与运算 对于 当 的值为 求值. 对B求值 求值 或运算:对于 或运算 对于A||B,当A的值为非 时,不再对 当 的值为非0时 不再对 对于 的值为非 B求值 求值. 求值
典型例题讲解: 典型例题讲解 1.简述下列术语 数据、数据元素、数据项、 简述下列术语: 1.简述下列术语:数据、数据元素、数据项、 数据逻辑结构、数据类型、算法。 数据逻辑结构、数据类型、算法。 2.分析下列语句段执行的时间复杂度 分析下列语句段执行的时间复杂度。 2.分析下列语句段执行的时间复杂度。 (1)i++; (2)for(i=0;i<n;i++) if(a[i]<x) x=a[i]; (3)for(i=0;i<n;i++) for(j=0;j<n;j++) printf(“%d %d”,i+j); printf( %d ,i+j);
ቤተ መጻሕፍቲ ባይዱ
2)数据结构的表示用类型定义 typedef 描 数据结构的表示用类型定义(typedef 数据结构的表示用类型定义 typedef)描 数据元素类型约定为ElemType,由用 述.数据元素类型约定为 数据元素类型约定为 由用 户在使用该数据类型时自行定义. 户在使用该数据类型时自行定义 3)基本操作的算法都用以下形式的函数描述 基本操作的算法都用以下形式的函数描述: 基本操作的算法都用以下形式的函数描述 函数名(函数参数表 函数参数表) 函数类型 函数名 函数参数表 {// 算法说明 语句序列 }//函数名 函数名 除了函数的参数需要说明类型外,算法中使用 除了函数的参数需要说明类型外 算法中使用 的辅助变量可以不作变量说明,必要时对其 的辅助变量可以不作变量说明 必要时对其 作用给予注释. 作用给予注释
3.写一算法依次打印一顺序栈中的元素值. 3.写一算法依次打印一顺序栈中的元素值. 写一算法依次打印一顺序栈中的元素值 4.写一算法依次打印一链队列中的元素值 写一算法依次打印一链队列中的元素值. 4.写一算法依次打印一链队列中的元素值. 5.编一程序 编一程序, 5.编一程序,将输入的非负十进制整数逆向显 如输入1234,输出显示4321. 1234,输出显示 示,如输入1234,输出显示4321.
3.按n的增长率由小至大顺序排列下列各函数。 按 的增长率由小至大顺序排列下列各函数 的增长率由小至大顺序排列下列各函数。 (2/3)n (3/2)n n2 nn n! 2n n log2n n3 4.写一算法,从小到大依次输出顺序读入的三个 写一算法, 写一算法 整数x,y,z的值。 的值。 整数 的值
8)输入和输出语句有 输入和输出语句有 格式串],变量 变量n) 输入语句 scanf([格式串 变量 格式串 变量1,…,变量 变量 格式串],表达式 输出语句 printf([格式串 表达式 格式串 表达式1,…,表达 表达 式n); 9)注释 注释 单行注释// 文字序列 单行注释 10)基本函数 基本函数 表达式1,…,表达式 表达式n) 求最大值 max(表达式 表达式 表达式 求最小值 min(表达式 表达式1,…,表达式 表达式n) 表达式 表达式 表达式) 求绝对值 abs(表达式 表达式
4)赋值语句有 赋值语句有 变量名=表达式 表达式; 简单赋值 变量名 表达式 串联赋值 变量名1=变量名 变量名2=…=变量名 变量名k=表达式 表达式; 变量名 变量名 变量名 表达式 成组赋值 (变量名 变量名1,…,变量名 变量名k)=(表达式 表达式1,…,表达式 表达式k); 变量名 变量名 表达式 表达式 结构名=结构名 结构名; 结构名 结构名 结构名=(值 结构名 值1,…,值k); 值 变量名[ 表达式; 变量名 ]=表达式 表达式 变量名[起始下标 终止下标]=变量名 起始下标.. 起始下标..终止下标 变量名[起始下标 变量名 起始下标 终止下标 变量名 起始下标 终止下标]; 终止下标 变量名←→变量名; ←→变量名 交换赋值 变量名←→变量名; 条件赋值 变量名=条件表达式 表达式T:表达式 条件表达式?表达式 表达式F; 条件赋值 变量名 条件表达式 表达式 表达式
队列和栈的实训练习题
1.有 个元素,其入栈的次序为A,B,C,D,E,在 1.有5个元素,其入栈的次序为A,B,C,D,E,在 A,B,C,D,E, 各种可能的出栈的次序中,以元素C,D C,D最先 各种可能的出栈的次序中,以元素C,D最先 出栈,( 为第一个出栈并且D ,(即 出栈,(即C为第一个出栈并且D为第二个出 栈)的次序有哪几个?以元素B,D最先出栈 的次序有哪几个?以元素B,D最先出栈 B,D 为第一个出栈并且D为第二个出栈) (即B为第一个出栈并且D为第二个出栈)的 次序有哪几个? 次序有哪几个? 2.写出下列程序段的运行结果 写出下列程序段的运行结果( 2.写出下列程序段的运行结果(栈中元素类 型是char). 型是char). main() { seqstack s,*p; char x,y; p=&s;
initstack(p); x=‘c’;y=‘k’; push(p,x);push(p,’a’); push(p,y); x=pop(p);push(p,’t’);push(p,s); x=pop(p);push(p,’a’); While(!empty(p)) {y=pop(p);printf(“%c”,y);} printf(“%c\n”,x); }
1)预定义常量和类型: 1)预定义常量和类型: 预定义常量和类型 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 //Status是函数的类型 是函数的类型, //Status是函数的类型,其值是函数结果状态 代码 typedef int Status;
6)循环语句有 循环语句有 for语句 for(赋初值表达式序列 条件 修改表达 赋初值表达式序列;条件 语句 赋初值表达式序列 条件;修改表达 式序列) 语句; 式序列 语句 while语句 while(条件 语句; 语句 条件) 语句 条件 do-while语句 语句 do{语句序列 语句序列;}while(条件 条件); 语句序列 条件 7)结束语句有 结束语句有 表达式; 函数结束语句有 return 表达式 或 return; case 结束语句 break; 异常代码); 异常结束语句 exit(异常代码 异常代码