数据结构教程 第二十五课 单元测验

教学目的: 复习前面所学的内容,检验学习效果,拾遗补缺

教学重点:

教学难点:

授课内容:

测验题:

一,填空:

  1. 基本数据结构有____,____,____,____四种。
  2. 存储结构可根据数据元素在机器中的位置是否连续分为____,____。
  3. 算法的基本要求有_____,_____,____,____。
  4. 度量算法效率可通过_______,_______两方面进行。
  5. 栈的定义:_______________________。

二,简答:

  1. 举例说明数据对象、数据元素、数据项的定义。
  2. 类C语言和C语言有哪些主要区别?
  3. 线性表的基本操作有哪些?
  4. 写出类C语言定义的线性表的静态分配顺序存储结构。

三,算法设计:

  1. 下面是线性表的存储结构和插入算法,请补充算法中空缺部分。

    #define LIST_INIT_SIZE 100

    #define LISTINCREMENT 10

    typedef struct{

    ElemType *elem; //存储空间基址

    int length; //当前长度

    int listsize; //当前分配的存储容量以一数据元素存储长度为单位

    }SqList;

    status ListInsert(List *L,int i,ElemType e) {

    ____________ *p,*q;

    if (i<1||i>L->length+1) return ERROR;

    q=&(L->elem[i-1]);

    for(p=&L->elem[L->length-1];p>=q;--p)

    ________________;

    *q=e;

    __________________;

    return OK;

    }/*ListInsert Before i */

  2. 下面是栈的顺序存储结构和入栈、出栈算法,请补充算法中空缺部分。

typedef struct{

SElemType *base;

SElemType *top; //设栈顶栈底两指针的目的是便于判断栈是否为空

int StackSize; //栈的当前可使用的最大容量.

}SqStack;

Status Push(SqStack &S,SElemType e); {

if(S.top - s.base>=S.stacksize) {

S.base=(ElemType *) realloc(S.base,

(S.stacksize + STACKINCREMENT) * sizeof(ElemType));

if(!S.base)exit(OVERFLOW);

S.top=S.base+S.stacksize;

S.stacksize+=STACKINCREMENT;

}

*S.top++=_____;

return OK;

} //Push

Status Pop(SqStack &S,SElemType &e); {

if(________)

return ERROR;

_____=*--S.top;

return OK;

}//Pop

四,问答:

  1. 用图示法说明在单向线性链表中插入结点的过程。
  2. 有一学生成绩单,画出用链式存储结构时的成绩单数据的存储映像。
  3. 用C语言实现单向线性链表。写出存储结构定义及基本算法。
时间: 2024-10-28 23:37:34

数据结构教程 第二十五课 单元测验的相关文章

数据结构教程 第二十二课 实验五 数组实验

教学目的: 掌握二维数组的实现方法 教学重点: 二维数组的存储表示,二维数组的基本操作 教学难点: 二维数组的基本操作 授课内容: 数组的顺序存储表示和实现: #include<stdarg.h> #define MAX_ARRAY_DIM 8 typedef struct { ElemType *base; int dim; int *bounds; int *constants; }Array; Status InitArray(Array &A,int dim,...); Sta

数据结构教程 第二十四课 遍历二叉树

教学目的: 掌握二叉树遍历的三种方法 教学重点: 二叉树的遍历算法 教学难点: 中序与后序遍历的非递归算法 授课内容: 一.复习二叉树的定义 二叉树由三个基本单元组成:根结点.左子树.右子树 问题:如何不重复地访问二叉树中每一个结点? 二.遍历二叉树的三种方法: 先序 1 访问根结点 2 先序访问左子树 3 先序访问右子树 中序 1 中序访问左子树 2 中序访问根结点 3 中序访问右子树 后序 1 后序访问左子树 2 后序访问右子树 3 访问根结点 三.递归法遍历二叉树 先序: Status(P

数据结构教程 第二十六课 图的定义与术语

教学目的: 掌握图的定义及常用术语 教学重点: 图的常用术语 教学难点: 图的常用术语 授课内容: 一.图的定义 图是一种数据元素间为多对多关系的数据结构,加上一组基本操作构成的抽象数据类型. ADT Graph{ 数据对象V :V是具有相同特性的数据元素的集合,称为顶点集. 数据关系R: R={VR} VR={<v,w>|v,w(-V且P(v,w),<v,w>表示从v到w的弧,谓词P(v,w)定义了弧<v,w>的意义或信息} 基本操作P: CreateGraph(&a

数据结构教程 第十五课 串的表示和实现

教学目的: 掌握串的几种实现方法 教学重点: 定长顺序存储表示法 堆分配存储表示法 教学难点: 堆分配存储表示法 授课内容: 一.复习串的定义 串的定义 二.定长顺序存储表示 类似于线性表的顺序存储结构,用一组地址连续的存储单元存储串值的字符序列. #define MAXSTRLEN 255 typedef unsigned char SString[MAXSTRLEN+1] //0号单元存放串长 串的实际长度可在这予定义长度的范围内随意,超过予定义长度的串值则被舍去 串长可用下标为0的数组元素

数据结构教程 第二十八课 图的存储结构

教学目的: 掌握图的二种存储表示方法 教学重点: 图的数组表示及邻接表表示法 教学难点: 邻接表表示法 授课内容: 一.数组表示法 用两个数组分别存储数据元素(顶点)的信息和数据元素之间的关系(边或弧)的信息. // 图的数组(邻接矩阵)存储表示 #define INFINITY INT_MAX //最大值无穷大 #define MAX_VERTEX_NUM 20 //最大顶点个数 typedef enum{DG,DN,AG,AN} GraphKind;//有向图,有向网,无向图,无向网 typ

数据结构教程 第二十九课 静态查找表(一)顺序表的查找

教学目的: 掌握查找的基本概念,顺序表查找的性能分析 教学重点: 查找的基本概念 教学难点: 顺序表查找的性能分析 授课内容: 一.查找的基本概念 查找表: 是由同一类型的数据元素(或记录)构成的集合. 查找表的操作: 1.查询某个"特定的"数据元素是否在查找表中.2.检索某个"特定的"数据元素的各种属性.3.在查找表中插入一个数据元素:4.从查找表中刪去某个数据元素. 静态查找表 对查找表只作前两种操作 动态查找表 在查找过程中查找表元素集合动态改变 关键字 是数

数据结构教程 第二十课 广义表

教学目的: 广义表的定义及存储结构 教学重点: 广义表的操作及意义 教学难点: 广义表存储结构 授课内容: 一.广义表的定义 广义表是线性表的推广,其表中的元素可以是另一个广义表,或其自身. 广义表的定义: ADT GList{ 数据对象:D={i=1,2,...,n>=0;ei(-AtomSet或ei(-GList, AtomSet为某个数据对象} 数据关系:R1={<ei-1,ei>|ei-1,ei(-D,2=<i<=n} 基本操作: InitGlist(&L);

数据结构教程 第十二课 实验二 循环链表实验

本课主题: 实验二 循环链表实验 教学目的: 掌握单向链表的实现方法 教学重点: 单向链表的存储表示及操作 教学难点: 单向链表的操作实现 授课内容: 一.单向链表的存储表示 C源程序 #include<stdio.h> #include<malloc.h> #include<conio.h> #define ERROR 0 #define OK 1 #define EQUAL 1 #define OVERFLOW -1 #define LIST_INIT_SIZE 1

数据结构教程 第十四课 串的定义

教学目的: 掌握串的定义及作用 教学重点: 串的类型定义 教学难点: 串的类型定义 授课内容: 一.串定义 串(或字符串),是由零个或多个字符组成的有限序列.一般记为: s='a1a2...an'(n>=0) 其中s是串的名,用单引号括起来的字符序列是串的值:串中字符的数目n称为串的长度.零个字符的串称为空串,它的长度为零. 串中任意个连续的字符组成的子序列称为该串的子串.包含子串的串相应地称为主串.通常称字符在序列中的称为该字符在串中的位置.子串在主串中的位置则以子串的第一个字符在主串中的位置