文档库 最新最全的文档下载
当前位置:文档库 › 判定表例子

判定表例子

判定表例子
判定表例子

某研究所重新对其在大学以上学历的职工安排工作。其方针如下:"如果年龄不满18岁,文化程度是大学,若是男性,则一律要求考研究生。若是女性,则分配到研究所办公室任行政干部;如果年龄满18岁但不足50岁,文化程度是研究生,不分男女性,均任课题组长。文化程度是大学,则不分男女性均担任中层以上各级领导干部;如果年龄满50岁以上,文化程度是研究生,若是男性,则任课题组长。文化程度是大学,若是男性,则任科研人员。若是女性,则任资料员"。

⑴判定表的绘制。

①提取问题中的条件:"性别"、"年龄"和"文化程度"三个条件。

②标出每个条件的取值(为了便于绘制判定表,用符号来代替条件的取值):

见下表一:条件取值表

N=所有取值数的积=2×3×2=12

④提取目标动作:任课题组长、任中层领导、任科研人员、任行政干部、任资料员和考研究生等六个动作。

⑤绘制判定表;

见下表二:初步的判定表。

问题:

Ⅰ遗失判定列:即判定表中缺少判定条件组合列。在表二中就缺少了两个判定列。所谓判定列是指判定表右部的各列(包括上下两部分构成的列)。

完善的判定表要满足以下条件:

A.判定列计数之和必须等于诸条件取值数之积。

也就是在判定表中右下部分选定的动作列中目标动作的数量应等于所有条件的组合数。

B.每个判定列必须是独立的,即任何两个判定列的诸条件中至少有一个条件的取值是不同。

Ⅱ矛盾判定列:是指两个判定列具有相同的条件值,却具有不同的目标动作。

Ⅲ冗余判定列:是指两个判定列具有相同的条件值和相同的目标动作。

当发生矛盾判定列和冗余判定列时,应与用户商量删除其中一列。

见表三,完善后的判定表

Ⅰ合并判定列:

如果判定表中有两个判定列,(见表三中的第5列和第11列),具有相同的"选取的目标动作",且其条件取值列中各条件的取值只有一个条件取值数为2(性别)取值不同外,其余条件(年龄和文化程度)取值均相同,则可以对它们进行一次合并。合并后的表见表四。

表四:一次合并后的判定表

作",且其条件取值列中各条件的取值只有一个条件取值数为3的条件(年龄)取值不同外,其余条件(性别和文化程度)取值均相同,则可以对它们进行一次合并。同样对表三中的第7、8、9三个判定也可进行一次合并。合并后的表见表四。

在表四的基础上,我们可以进行第二次合并,合并后见表五。

试举一个数据结构的例子、叙述其逻辑结构、存储结构、运算三个方面的内容。

数据结构复习笔记 作者: 网络转载发布日期: 无 数据就是指能够被计算机识别、存储和加工处理的信息的载体。 数据元素是数据的基本单位,有时一个数据元素可以由若干个数据项组成。数据项是具有独立含义的最小标识单位。如整数这个集合中,10这个数就可称是一个数据元素.又比如在一个数据库(关系式数据库)中,一个记录可称为一个数据元素,而这个元素中的某一字段就是一个数据项。 数据结构的定义虽然没有标准,但是它包括以下三方面内容:逻辑结构、存储结构、和对数据的操作。这一段比较重要,我用自己的语言来说明一下,大家看看是不是这样。 比如一个表(数据库),我们就称它为一个数据结构,它由很多记录(数据元素)组成,每个元素又包括很多字段(数据项)组成。那么这张表的逻辑结构是怎么样的呢? 我们分析数据结构都是从结点(其实也就是元素、记录、顶点,虽然在各种情况下所用名字不同,但说的是同一个东东)之间的关系来分析的,对于这个表中的任一个记录(结点),它只有一个直接前趋,只有一个直接后继(前趋后继就是前相邻后相邻的意思),整个表只有一个开始结点和一个终端结点,那我们知道了这些关系就能明白这个表的逻辑结构了。 而存储结构则是指用计算机语言如何表示结点之间的这种关系。如上面的表,在计算机语言中描述为连续存放在一片内存单元中,还是随机的存放在内存中再用指针把它们链接在一起,这两种表示法就成为两种不同的存储结构。(注意,在本课程里,我们只在高级语言的层次上讨论存储结构。) 第三个概念就是对数据的运算,比如一张表格,我们需要进行查找,增加,修改,删除记录等工作,而怎么样才能进行这样的操作呢? 这也就是数据的运算,它不仅仅是加减乘除这些算术运算了,在数据结构中,这些运算常常涉及算法问题。 弄清了以上三个问题,就可以弄清数据结构这个概念。 -------------------------------------------------------------------------------- 通常我们就将数据的逻辑结构简称为数据结构,数据的逻辑结构分两大类:线性结构和非线性结构(这两个很容易理解) 数据的存储方法有四种:顺序存储方法、链接存储方法、索引存储方法和散列存储方法。-------------------------------------------------------------------------------- 下一个是难点问题,就是算法的描述和分析,主要是算法复杂度的分析方法及其运用。首先了解一下几个概念。一个是时间复杂度,一个是渐近时间复杂度。前者是某个算法的时间耗费,它是该算法所求解问题规模n的函数,而后者是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。 当我们评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度,因此,在算法分析时,往往对两者不予区分,经常是将渐近时间复杂度T(n)=O(f(n)简称为时间复杂度,其中的f(n)一般是算法中频度最大的语句频度。 此外,算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。但是我们总是考虑在最坏的情况下的时间复杂度。以保证算法的运行时间不会比它更长。 常见的时间复杂度,按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n^2)、立方阶O(n^3)、k次方阶O(n^k)、指数阶O(2^n)。 时间复杂度的分析计算请看书本上的例子,然后我们通过做练习加以领会和巩固。 数据结构习题一 --------------------------------------------------------------------------------

线性表详细教案

教案 学科名称:计算机导论 课题:数据结构基础(新课) 教学目标:让学生了解数据结构在信息技术中的重要性,为让学生通过学习数据结构基础,能过更好的学习算法和程序设计。教学内容:向学生阐述数据结构的运用和几种典型的数据结构(线性表、堆栈、队列)及其定义和特征。 教学重点:了解什么是数据结构,数据结构的类型的表现和实现。教学难点:熟悉几种典型数据结构(线性表、堆栈、队列)的运算及其存储方式。 教学策略:讲授法,演示法,和操练法。举一些典型的例子,演示数据结构的存储和区别,主要以幻灯片的方式来演示。 教学过程: 一数据结构含义 (提问:什么是数据结构?) 所谓数据结构是带有结构的数据元素的集合,结构反映了数 据元素相互之间存在的某种联系。(这里所说的“数据”,是 指描述客观事物的数、字符以及所有能输入到计算机并且被 计算机处理的符号的集合。因此,在计算机科学技术中,“数 据”的含义是十分广泛的,它不仅可以是数值,其他如字符、 图形、图像、乃至声音等信息都可以视为数据。数据集合中 每一个个体称为数据元素,它是数据的基本单位。)

(1)不同角度看数据结构 学科角度:数据结构是计算机科学技术的一个分支,它主要 研究数据的逻辑结构(即数据元素之间的逻辑关系)和物理 结构(即数据在计算机中是如何表示的)以及它们之间的关 系。 课程角度:数据结构是计算机科学技术的一门重要的专业基 础课,其中系统介绍线性表、堆栈、队列、串、数组和广义 表、树、图等基本类型的数据结构及其相应的运算的实现算 法。 二、几种典型的数据结构 1、线性表 (1)线性表的定义(提问:看到线性表会联想到什么?{数 轴}、坐标) 线性表是一种简单且最常用的数据结构。一个线性表是n 个数据元素的有序列,每一个数据元素根据不同的情况可以 是一个数、一个符号或者一个记录等信息。例如:英文字母 表(A,B,C,D,E,…,Z)就是一个线性表,其中的数据元素 就是单个的字母。 数据元素、数据项 数据元素是数据的基本单位,它也可以再由不可分割的数据项组成。如图示:

第2章 线性表和应用复习题解答

第2章线性表及其应用 本章学习要点 ◆掌握线性表的逻辑结构及相关概念。 ◆掌握线性表的两种基本存储结构,即线性顺序表(顺序表)和线性链表(链表)的存储结构。体会线性表在各种存储方式之间的差异及其各自的优缺点。 ◆熟练掌握顺序表和链表上各种基本操作的实现过程。 ◆灵活运用顺序表和链表的特点解决实际应用问题。 线性表(Linear List)是一种最基本、最常用的数据结构。线性表有两种基本存储表示方法,即顺序存储表示和链表表示。线性表的基本操作主要有插入、删除和查找等。本章将具体给出线性表的定义、存储结构、基本操作及其算法实现,最后给出线性表的应用实例。 2.1线性表的定义和基本运算 2.1.1线性表的定义 线性表是n(n≥0)个同类型数据元素(记录或结点)的有限序列:a0,a1,a2,…,a n-1。 记为:L n=(a0,a1,a2,…,a n-1)。 其中:a0是开始结点,a n-1是终端结点,a k是a k+1的直接前驱结点,而a k+1是a k的直接后继结点(k=0,1,2,…,n-2);终端结点a n-1没有后继结点,开始结点a0没有前驱结点;元素a i(i=0,1,2…,n-1)在表中的位置为i+1;元素的个数n称为线性表L的长度,长度为零的线性表叫空表。 需要说明的是:在C/C++语言中,数组元素的下标是从0开始的,具有n个数据元素的数组A的所有元素为A[0],A[1],…,A[n-1]。在线性表的定义中,第i个元素的下标为i-1,即元素的位置等于其下标加1。 日常生活中,线性表的例子很多: 【例2.1】L10=(1,3,5,7,9,2,4,6,8,10)是一个线性表。其中的数据元素是整数,该线性表的长度为10。按表中的排列顺序,元素1是第一个元素没有前驱,元素10是最后一个元素没有后继。 【例2.2】L36=(0,1,2,3,4,5,6,7,8,9,A,B,C,D,…,X,Y,Z)是一个线性表。其中的数据元素是所有数字字符和所有大写字母字符,线 性表的长度为36。按表中的排列顺序, 元素‘0’是第一个元素没有前驱,元素 ‘Z’是最后一个元素没有后继。 【例2.3】由图2.1所示的学生基本情 况表L7也是一个线性表。线性表中的元 素是由5个数据项组成的纪录,表的长度 为7。

线性表的基本操作与实现 [文档在线提供]

课程设计任务书 2008—2009学年第二学期 专业班级:07普本信计4班学号:070601187 姓名:范志伟 课程设计名称:数据结构 设计题目:线性表的基本操作与实现 完成期限:自2009 年 6 月16 日至2009 年 6 月23 日共 1 周 设计依据、要求及主要内容: 一、内容和设计目的 线性表是最基本的线性结构,任何线性结构都可以用线性表表示。线性表的结构在 信息检索、程序设计语言的编译等许多方面有广泛的应用。本次设计主要是运用线性表 的插入、删除和查找,并运用C语言的一些知识编写出程序使算法得以实现。 二、设计要求 线性表的性质和基本操作,线性表中的所有结点的数据类型是相同的,每个结点在 存储器中占用大小相同的空间。 三、参考文献 [1] 杨谊,喻德旷,李光明.数据结构(C++版)[M].北京:冶金工业出版社,2003. [2] 严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,2008. [3] 熊岳山,刘越.数据结构与算法[M].北京:电子工业出版社,2007. 计划答辩时间:2009年 6 月19 日 工作任务与工作量要求:查阅文献资料不少于3篇,课程设计报告1篇不少于3000字。 指导教师(签字):教研室主任(签字): 批准日期:年月日

线性表的基本操作与实现 摘要 线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。 关键词:线性表;插入;删除;创建;查找.

《数据结构》 实验报告模板(附实例) ---实验一 线性表的基本操作实现

实验一线性表的基本操作实现及其应用 一、实验目的 1、熟练掌握线性表的基本操作在两种存储结构上的实现,其中以熟悉各种链表的操作为重点。 2、巩固高级语言程序设计方法与技术,会用线性链表解决简单的实际问题。 二、实验内容 √ 1、单链表的表示与操作实现 ( * ) 2、约瑟夫环问题 3、Dr.Kong的艺术品 三、实验要求 1、按照数据结构实验任务书,提前做好实验预习与准备工作。 2、加“*”题目必做,其他题目任选;多选者并且保质保量完成适当加分。 3、严格按照数据结构实验报告模板和规范,及时完成实验报告。 四、实验步骤 (说明:依据实验内容分别说明实验程序中用到的数据类型的定义、主程序的流程以及每个操作(成员函数)的伪码算法、函数实现、程序编码、调试与分析、总结、附流程图与主要代码) ㈠、数据结构与核心算法的设计描述 (程序中每个模块或函数应加注释,说明函数功能、入口及出口参数) 1、单链表的结点类型定义 /* 定义DataType为int类型 */ typedef int DataType; /* 单链表的结点类型 */ typedef struct LNode { DataType data; struct LNode *next; }LNode,*LinkedList; 2、初始化单链表 LinkedList LinkedListInit( ) { // 每个模块或函数应加注释,说明函数功能、入口及出口参数 } 3、清空单链表 void LinkedListClear(LinkedList L) {// 每个模块或函数应加注释,说明函数功能、入口及出口参数} 4、检查单链表是否为空 int LinkedListEmpty(LinkedList L) { …. } 5、遍历单链表

线性表基本操作实例

数据结构,线性表的基本操作实例。本例子实现了建立一个顺序存储的线性表,实现线性表的插入、删除操作。 而且符合以下要求: (1)建立一个按关键字有序的线性表,从键盘上输入一个数,将该数插入到表中,使该线性表插入数据后仍按关键字有序; (2)建立一个线性表,从键盘上输入一个数,查找表中是否存在该数,若有则删除所有与该数相等的数。 该线性表的基本操作实例的完整程序代码为: #include using namespace std; typedef int datatype; const int maxsize=100; typedef struct{ datatype data[maxsize+1]; int n; }sqlist; sqlist* creat() { datatype x; int i=1; sqlist *L; L=new sqlist; while(cin>>x,x!=t) { L->data[i]=x; i++; } L->n=i-1; L->data[0]=L->n; return L; } int insertHigh(sqlist *L,datatype x) { int j,i; if(L->n==maxsize) { cout<<"表满,不能插入! "; return 0;} for(int j=1;j<=L->n;j++) if(L->data[j]>=x) { i=j; break; } L->n++; for(j=L->n;j>i;j--) { L->data[j]=L->data[j-1]; } L->data[i]=x;

线性表实例

线性表的实现: ADT List{ 数据对象: D={ai| ai(-ElemSet,i=1,2,...,n,n>=0} 数据关系: R1={| ai-1,ai(- D,i=2,...,n} 基本操作: InitList(&L) DestroyList(&L) ListInsert(&L,i,e) ListDelete(&L,i,&e) }ADT List ListInsert(List &L,int i,ElemType e) {if(i<1||i>L.length+) return ERROR; q=&(L.elem[i-1]); for(p=&(L.elem[L.length-1]);p>=q;--p) *(p+1)=*p; *q=e; ++L.length; return OK; } C语言实现 #include #include #define ERROR 0 #define OK 1 struct STU { char name[20]; char stuno[10]; int age; int score; }stu[50]; struct LIST { struct STU stu[50];

int length; }L; void printlist(struct LIST L) { int i; printf("name stuno age score\n"); for(i=0;iL->length+1) return ERROR; q=&(L->stu[i-1]); for(p=&L->stu[L->length-1];p>=q;--p) *(p+1)=*p; *q=e; ++L->length; return OK; }/*ListInsert Before i */ void main() { struct STU e; L.length=0; strcpy(https://www.wendangku.net/doc/601277120.html,,"zmofun"); /*函数char *strcpy(char *dest,char *src);用法:#include 功能:把src所指由NULL结束的字符串复制到dest所指的数组中。说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。*/ strcpy(e.stuno,"100001"); e.age=80; e.score=1000; listinsert(&L,1,e); printlist(L); printf("List length now is %d.\n\n",L.length); strcpy(https://www.wendangku.net/doc/601277120.html,,"bobjin"); strcpy(e.stuno,"100002"); e.age=80; e.score=1000; listinsert(&L,1,e); printlist(L); printf("List length now is %d.\n\n",L.length); } 编译结果:

数据结构_线性表实例1

/*------数据结构之线性表--------------- 名称:线性表的顺序存储实例 语言:C语言 敲者:C.ROOKIE 邮箱:MG_TCCX@https://www.wendangku.net/doc/601277120.html, Q Q:2424488418 日期:2012.11.07 (00:12) 目的:再次复习数据结构 心情:嘿嘿的夜晚总是很寂寞,每次寂寞不 知不觉打开VIM.敲起来,键盘的声音 很让我陶醉,让我忘记时间的流逝。 实例:数据类型为整型的顺序表La和Lb,其 数据元素均升序排序,编写一个算法 将顺序表La和Lb的元素的交集存入到 顺序表Lc中,要求Lc中数据元素也是 按升序排列.. --------------------------------------*/ #include //#include /*顺序存储类型定义*/ typedef char DataType; #define MaxSize 10 typedef struct{ DataType data[MaxSize]; //不存数据 int length; //顺序表长度 }SqList; /*声明La和Lb交集的实现方法*/ SqList SqList_Intersect(SqList La,SqList Lb); /*La和Lb输入函数*/ SqList SqList_Input(); /*主函数*/ int main() { SqList La,Lb,Lc; La.length=Lb.length=Lc.length=0; printf("请输入线性表La的值(限10以内的字符):"); La=SqList_Input(); if(La.length>=10) { printf("警告:你输入的字符长度超出线性表的长度.\n"); return 0;

相关文档
相关文档 最新文档