栈的抽象数据类型定义

抽象数据类型的定义怎么写(一般情况下,抽象数据类型都可以怎样定义)

1.一般情况下,抽象数据类型都可以怎样定义

首先什么是抽象数据类型,抽象数据类型泛指除基本数据类型以外的数据类型。什么叫类型?就是一类数据。基本数据类型被认做是最基本地,不可再划分的数据,一般就是整形、浮点型、以及字符型。抽象数据类型是由若干基本数据类型归并之后形成的一种新的数据类型,这种类型由用户定义,功能操作比基本数据类型更多,一般包括结构体和类。其实说白了,抽象数据类型就是把一些有一定关联的基本数据类型打包,然后当做新的数据类型使用。

由上可知,我认为抽象数据类型的定义方法就是结构体和类的定义方法。

2.怎样写一个抽象数据类型

template 这是定义类模版

因为C语言的函数参数传递需要指定确定类型才行。这样在编写程序过程就比较麻烦。比如

要写一个两个数相加的函数 int add(int a,int b),可以看到,这个函数只支持int 类型,float,double等类型就不能用这个函数了,只能再写一个 float addf(float a,float b)。这样代码的重用性能不好。

到了C++就有模版的出现了

就是定义一个模版,传入参数类型是不定时,就可以定义为模版。

你的代码就是了,template class T是任意的类型。

这样需要说明的是,模版的类型转换过程是发生在编译之前,也就是预编译,预编译跟预处理不同,预处理纯粹是编译前宏代码的替换,预编译是开始编译后,对一些模版类型进行调整生成中间代码,当然还有其它一些工作。

当编译成目标文件后,模版在定义变量赋了什么类型就是什么类型了

3.抽象数据类型定义有哪些内容

抽象数据类型 与机器语言、汇编语言相比,高级语言的出现大大地简便了程序设计。

但算法从非形式的自然语言表达到形式化的高级语言表达,仍然是一个复杂的过程,仍然要做很多繁杂琐碎的事情,因而仍然需要抽象。 对于一个明确的数学问题,设计它的算法,总是先选用该问题的一个数据模型。

接着,弄清该问题所选用的数据模型在已知条件下的初始状态和要求 的结果状态,以及隐含着的两个状态之间的关系。然后探索从数据模型的已知初始状态出发到达要求的结果状态所必需的运算步骤。

把这些运算步骤记录下来,就是 该问题的求解算法。 按照自顶向下逐步求精的原则,我们在探索运算步骤时,首先应该考虑算法顶层的运算步骤,然后再考虑底层的运算步骤。

所谓顶层的运算步骤是指定义在数 据模型级上的运算步骤,或叫宏观运算。它们组成算法的主干部分。

表达这部分算法的程序就是主程序。其中涉及的数据是数据模型中的一个变量,暂时不关心它的 数据结构;涉及的运算以数据模型中的数据变量作为运算对象,或作为运算结果,或二者兼而为之,简称为定义在数据模型上的运算。

由于暂时不关心变量的数据结 构,这些运算都带有抽象性质,不含运算的细节。所谓底层的运算步骤是指顶层抽象的运算的具体实现。

它们依赖于数据模型的结构,依赖于数据模型结构的具体表 示。因此,底层的运算步骤包括两部分:一是数据模型的具体表示;二是定义在该数据模型上的运算的具体实现。

我们可以把它们理解为微观运算。于是,底层运算 是顶层运算的细化;底层运算为顶层运算服务。

为了将顶层算法与底层算法隔开,使二者在设计时不会互相牵制、互相影响,必须对二者的接口进行一次抽象。让底 层只通过这个接口为顶层服务,顶层也只通过这个接口调用底层的运算。

这个接口就是抽象数据类型。其英文术语是Abstract Data Types,简记ADT。

抽象数据类型是算法设计和程序设计中的重要概念。严格地说,它是算法的一个数据模型连同定义在该模型上、作为该算法构件的一组运算。

这个概念明确地 把数据模型与作用在该模型上的运算紧密地联系起来。 事实正是如此。

一方面,如前面指出过的,数据模型上的运算依赖于数据模型的具体表示,因为数据模型上的 运算以数据模型中的数据变量作为运算对象,或作为运算结果,或二者兼而为之;另方面,有了数据模型的具体表示,有了数据模型上运算的具体实现,运算的效率 随之确定。 于是,就有这样的一个问题:如何选择数据模型的具体表示使该模型上的各种运算的效率都尽可能地高?很明显,对于不同的运算组,为使组中所有运算 的效率都尽可能地高,其相应的数据模型具体表示的选择将是不同的。

在这个意义下,数据模型的具体表示又反过来依赖于数据模型上定义的那些运算。 特别是,当 不同运算的效率互相制约时,还必须事先将所有的运算的相应使用频度排序,让所选择的数据模型的具体表示优先保证使用频度较高的运算有较高的效率。

数据模型 与定义在该模型上的运算之间存在着的这种密不可分的联系,是抽象数据类型的概念产生的背景和依据。 应该指出,抽象数据类型的概念并不是全新的概念。

它实际上是我们熟悉的基本数据类型概念的引伸和发展。用过高级语言进行算法设计和程序设计的人都知 道,基本数据类型已隐含着数据模型和定义在该模型上的运算的统一,只是当时还没有形成抽象数据类型的概念罢了。

事实上,大家都清楚,基本数据类型中的逻辑 类型就是逻辑值数据模型和或(∨)、与(∧)、非(┐)三种逻辑运算的统一体;整数类型就是整数值数据模型和加(+)、减(-)、乘(*)、除(div) 四种运算的统一体;实型和字符型等也类同。每一种基本类型都连带着一组基本运算。

只是由于这些基本数据类型中的数据模型的具体表示和基本运算的具体实现都 很规范,都可以通过内置(built-in)而隐蔽起来,使人们看不到它们的封装。许多人已习惯于在算法与程序设计中用基本数据类型名和相关的运算名,而 不问其究竟。

所以没有意识到抽象数据类型的概念已经孕育在基本数据类型的概念之中。 回到定义算法的顶层和底层的接口,即定义抽象数据类型。

根据抽象数据类型的概念,对抽象数据类型进行定义就是约定抽象数据类型的名字,同时,约定在 该类型上定义的一组运算的各个运算的名字,明确各个运算分别要有多少个参数,这些参数的含义和顺序,以及运算的功能。 一旦定义清楚,算法的顶层就可以像引 用基本数据类型那样,十分简便地引用抽象数据类型;同时,算法的底层就有了设计的依据和目标。

顶层和底层都与抽象数据类型的定义打交道。顶层运算和底层运 算没有直接的联系。

因此,只要严格按照定义办,顶层算法的设计和底层算法的设计就可以互相独立,互不影响,实现对它们的隔离,达到抽象的目的。 在定义了抽象数据类型之后,算法底层的设计任务就可以明确为: 赋每一个抽象数据类型名予具体的构造数据类型,或者说,赋每一个抽象数据类型名予具体的数据结构; 赋每一个抽象数据类型上的每个运算名予具体的运算内容,或者说,赋予具。

4.仿照三元组的抽象数据类型分别写出抽象数据类型复数的定义

1.1

试仿照三元组的抽象数据类型分别写出抽象数据类型复数的定义。

1.2

n

为正整数,试确定下列各程序段中前置以记号

#

的语句的频度。

1.

i=1;k=0;

While (i{ #

k+=10*i;

i++;}

2.

i=1;k=0;

do { #

k+=10*i;

i++;} While (i3. i=1;k=0;

While (i{ i++;

#

k+=10*i; }

4. k=0;

for(i=1;i

{ for(j=i;j# k++;

}

5. for(i=1;i

for(j=1;j

for(k=1;k# x+=delta;;

6. i=1;j=0;

While (i+j{ # if (i>j)

j++;

else i++; }

7. x=n; y=0;

While (x>=(y+1)*(y+1))

{ #

y++; }

8. x=91; y=100;

While (y>0)

{ #

if (x>100) { x-=10; y--; }

else x++;

}

1.3

试写一算法,自大至小依次输出顺序读入的三个整数

X

Y

Z

的值

抽象数据类型的定义怎么写

转载请注明出处育才学习网 » 栈的抽象数据类型定义

知识

罗梅芬用日文怎么写(罗钰潇日语怎么写)

阅读(21418)

本文主要为您介绍罗梅芬用日文怎么写,内容包括伊蕾娜日语怎么写,王雪菲用日文怎么说,张佳怡在日语中怎么写啊怎么读啊。罗 ら ラ ra钰 ぎょく ギョク gyoku潇 しょう シヨウ shou第一列:日语汉字,写法同汉字,都要用繁体,这三个都挺难写的,看

知识

邓先生的英文怎么写(1~40的英文怎么说)

阅读(10433)

本文主要为您介绍邓先生的英文怎么写,内容包括“邓先生”用英语怎么写,1~40的英文怎么说,漂亮英文beautiful缩写怎么写。1 one 2 two 3 three 4 four 5 five 6 six 7 seven 8 eight 8 nine 10 te

知识

一个人布满皱纹怎么写(描写人物皱纹的句子)

阅读(9503)

本文主要为您介绍一个人布满皱纹怎么写,内容包括描写人物皱纹的句子,描写人物皱纹的句子,皱纹怎么描写。、老人脸上布满了皱纹,那一条条曲折不均的像是墙上斑驳的印迹,爬满了面容,留下了岁月的痕迹。2、外祖父是一位年过六旬的白发老人。在他

知识

登录接口怎么写(php登录的接口怎么写)

阅读(7753)

本文主要为您介绍登录接口怎么写,内容包括php登录的接口怎么写,网页登陆接口怎么做,网站登录接口程序怎么做。PHP 接口 接口 使用接口(interface),你可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。我们可以通过int

知识

档案奖惩情况怎么写(奖惩情况怎么写)

阅读(9592)

本文主要为您介绍档案奖惩情况怎么写,内容包括奖惩情况怎么写,个人简历及奖惩情况怎么填写,个人简历里面奖惩情况怎么写。在简历里的“奖励”部分,列出与你所获得的并与你的求职目标相关的荣誉、奖励和奖金。你既可以按时间顺序排列,也可以按

知识

头孢克肟拼音怎么写(头孢克肟的肟念什么)

阅读(7995)

本文主要为您介绍头孢克肟拼音怎么写,内容包括头孢克肟片全名拼音,头孢克肟片全名拼音,头孢克肟的肟念什么。肟[wò] :是含有羰基的醛、酮类化合物与羟胺作用而生成的有机化合物,可以参与许多有机化学反应,例如经典的Beckmann重排就是肟为底

知识

一库搜用日语怎么写(日语一库是什么意思)

阅读(7980)

本文主要为您介绍一库搜用日语怎么写,内容包括日语大神来,看动漫里的主人公说一句:恰,一库搜这是什么意思,一库一库;一搜库这两个日语是什么意思怎么写,看片都有“一库”(日语)是什么意。一库的意思就是“出发,出去”的意思。日语「行く」的音译

知识

外租无人机广告怎么写(植保无人机广告语)

阅读(6990)

本文主要为您介绍外租无人机广告怎么写,内容包括求一个无人机创意广告词谢谢巨友们了,求一关于无人机的广告标语,求一关于无人机的广告标语我们公司是做无人机的,新成立的公司,求。DJI大疆创新研发的的MG-1农业植保机专为农村作业环境设计,

知识

河南话que怎么写(河南话的nenna怎么写)

阅读(6524)

本文主要为您介绍河南话que怎么写,内容包括que怎么写,河南话的nenna怎么写,que怎么写。尿一壶(niào yī hú)关系密切,观点一致。例:“他俩今天尿一壶啦。”●尿(niào)⑴、从尿道排泄的液体。⑵、排泄小便。⑶、不放

知识

国学经文的论文怎么写(国学征文该怎么写)

阅读(7103)

本文主要为您介绍国学经文的论文怎么写,内容包括国学征文该怎么写,弟子规的400论文,关于国学经典的征文怎么写。“子曰:“温故而知新,可以为师”……小时,总是觉得国学就是没用的,古人写的话,我们还需要背,每次老师教给我们时,我总是会让思想开一

知识

化学实验总结怎么写(化学实验报告小结怎么写)

阅读(5386)

本文主要为您介绍化学实验总结怎么写,内容包括化学实验总结怎么写,化学实验报告小结怎么写,化学实验小结怎么写。化学实验报告的书写: 一般情况下化学实验报告是根据实验步骤和顺序从七方面展开来写的: 1.实验目的:即本次实验所要达到的目标或

知识

蝴蝶豌豆拼音怎么写(豌豆的拼音是什么)

阅读(5819)

本文主要为您介绍蝴蝶豌豆拼音怎么写,内容包括蝴蝶怎么拼音的,豌豆的拼音是什么,蝴蝶的拼音是什么。豌豆的拼音是[wān dòu]。豌豆是豆科一年生攀援草本,高0.5-2米。全株绿色,光滑无毛,被粉霜。叶具小叶4-6片,托叶心形,下缘具

知识

海绵宝宝用英文怎么说(海绵宝宝用英文怎么说)

阅读(6504)

本文主要为您介绍海绵宝宝用英文怎么说,内容包括海绵宝宝用英语怎么说,海绵宝宝用英文怎么说,海绵宝宝英文名是什么。1. SPONGEBOB SQUAREPANTS 近期很夯的一步卡通影片《海绵宝宝》(SpongeBob SquarePants)是一系

知识

茶盏怎么用(茶盏在茶道中干嘛用)

阅读(5412)

本文主要为您介绍茶盏怎么用,内容包括茶盏怎么用我要写一篇200字左右的茶盏的使用说明,求指教,茶盏在茶道中干嘛用,问一下斗笠盏如何使用现在是不是很少有人使用它,它的意义。苏东坡的名句"从来佳茗似佳人",典型地代表了唐宋及以后的文人墨客,

知识

thinkpad小红点怎么用(怎么学习使用thinkpad小红点)

阅读(7572)

本文主要为您介绍thinkpad小红点怎么用,内容包括怎么学习使用thinkpad小红点,thinkpad小红点怎么用,求教:THINKPAD的小红点使用方法。Thinkpad 小红点最高效的使用方法为:左手拇指按左键,无操作时在左键待命2、右手拇指按右键,同时兼按空格键及