c语言adt函数 c语言ad1

adt是什么意思?抽象数据类型(ADT)是一个实现包括储存数据元素的存储结构以及实现基本操作的算法 。在这个数据抽象思想中,数据类型的定义和它的实现是分开的,这在软件设计中是一个重要的概念 。这使得只研究和使用它的结构而不用考虑它的实现细节成为可能 。
在面向对象编程语言中,像C、Java都能较好的支持ADT , 如类的机制 。而在C语言中缺少了对相关方法的支持 。
在C语言中 , 有些数据结构类型是C语言程序员不可或缺的工具 , 这是由于它们的属性决定的 。这类ADT有链表,堆栈,队列和树等,它们在实现上极具灵活性 。
抽象数据类型需要通过固有数据类型(高级编程语言中已实现的数据类型)来实现 。抽象数据类型是与表示无关的数据类型,是一个数据模型及定义在该模型上的一组运算 。
对一个抽象数据类型进行定义时,必须给出它的名字及各运算的运算符名 , 即函数名,并且规定这些函数的参数性质 。
一旦定义了一个抽象数据类型及具体实现,程序设计中就可以像使用基本数据类型那样,十分方便地使用抽象数据类型 。
什么是ADT 函数Abstract Data Typec语言adt函数,抽象数据类型,是指数据结构作为一个软件组件的实现 。ADT的接口用一种类型和该类型上的一组操作来定义,每个操作由它的输入和输出定义 。
ADT并不会指定数据类型如何实现,这些实现细节对于ADT的用户来说是隐藏的,并且通过封装(encapsulation)来阻止外部对c语言adt函数他的访问 。
数据结构(Data Structure)是ADT的实现,在诸如c之类的面向对象语言中,ADT及其实现组成c语言adt函数了类(class) 。同ADT联系在一起的每个操作均由一个成员函数(member function)来实现 。数据结构是指存储在计算机内存中的数据 , 文件结构是指外存储器中数据的组织 。
对于使用同一ADT的两个应用程序,可能存在一个应用程序使用的ADT特殊方法比另一个多的情况或者这两个程序对该ADT的操作有不同的时间需求 。正是由于应用程序的需求存在差异,才使一个给定ADT有多种实现形式的可能性 。
问题c语言adt函数:从直觉上讲,问题无非是一个需要完成的任务 , 即一组输入就有一组对应的输出 。
算法:算法是指解决问题的一种方法或者一个过程 。
程序:一个计算机程序被认为是使用某种程序设计语言对一种算法的具体实现 。
数据结构——C语言:求解题目:为字符串定义一个ADT,要求包含常见的字符串运算,每个运算定义成一个严蔚敏教材中的抽象数据类型串
ADT String {
 数据对象:D={ai |ai∈CharacterSet, i=1,2,...,n, n≥0}
 数据关系:R1={ ai-1 , ai | ,ai-1,ai∈D, i=2,...,n }
 基本操作:
StrAssign (T, chars)
 初始条件:chars 是串常量 。
 操作结果:赋于串T的值为 chars 。
StrCopy (T, S)
 初始条件:串 S 存在 。
 操作结果:由串 S 复制得串 T 。
DestroyString (S)
 初始条件:串 S 存在 。
 操作结果:串 S 被销毁 。
StrEmpty (S)
 初始条件:串 S 存在 。
 操作结果:若 S 为空串,则返回 TRUE,否则返回 FALSE 。
StrCompare(S, T)
 初始条件:串 S 和 T 存在 。
 操作结果:若ST , 则返回值=0;若S=T , 则返回值0;若ST , 则返回值0 。
StrLength (S)
 初始条件:串 S 存在 。
 操作结果:返回串 S 序列中的字符个数,即串的长度 。
ClearString (S)
 初始条件:串 S 存在 。
 操作结果:将 S 清为空串 。
Concat(T, S1, S2)
 初始条件:串 S1 和 S2 存在 。
 操作结果:用 T 返回由 S1 和 S2 联接而成的新串 。
SubString(Sub, S, pos, len)
 初始条件:串S存在,1≤pos≤StrLength(S)且0≤len≤StrLength(S)-pos 1 。
 操作结果:用 Sub 返回串S的第 pos 个字符起长度为 len 的子串 。
Index (S, T,pos)
 初始条件:串S和T存在 , T 是非空串 , 1≤pos≤StrLength(S) 。
 操作结果:若主串S中存在和串T值相同的子串,则返回它在主串S中第pos个字符之后第一次出现的位置;否则函数值为0 。
Replace(S, T, V)
 初始条件:串 S,T 和 V 存在,T 是非空串 。
 操作结果:用V替换主串S中出现的所有与T相等的不重叠的子串 。
StrInsert(S, pos, T)
 初始条件:串 S 和 T 存在,1≤pos≤StrLength(S)+1 。
 操作结果:在串 S 的第 pos 个字符之前插入串 T 。
StrDelete (S, pos, len)
 初始条件:串 S 存在,1≤pos≤StrLength(S)-len 1 。
 操作结果:从串 S 中删除第 pos 个字符起长度为 len 的子串 。
} ADT String
//串的定长顺序存储表示
#define MAXSTRLEN 255
typedef int Status;
typedef char SString[MAXSTRLEN 1]; // 0号单元存放串长度
Status StrAssign(SString T,char *chars)
{ // 串赋值
int i;
if(strlen(chars)MAXSTRLEN)
return ERROR;
else
{
T[0]=strlen(chars);
for(i=1;i=T[0];i)
T[i]=*(chars i-1);
return OK;
}
}
Status StrCopy(SString T,SString S)
{ // 串复制
int i;
for(i=0;i=S[0];i)
T[i]=S[i];
return OK;
}
Status StrEmpty(SString S)
{ // 判空串
if(S[0]==0)
return TRUE;
else
return FALSE;
}
int StrCompare(SString S,SString T)
{ // 串比较
int i;
【c语言adt函数 c语言ad1】for(i=1;i=S[0]i=T[0];i)
if(S[i]!=T[i])
return S[i]-T[i];
return S[0]-T[0];
}
int StrLength(SString S)
{ // 求串长
return S[0];
}
Status ClearString(SString S)
{ // 串清空
S[0]=0;// 令串长为零
return OK;
}
Status Concat(SString T,SString S1,SString S2)
{ // 串连接
int i;
if(S1[0] S2[0]=MAXSTRLEN)
{ // 未截断
for(i=1;i=S1[0];i)
T[i]=S1[i];
for(i=1;i=S2[0];i)
T[S1[0] i]=S2[i];
T[0]=S1[0] S2[0];
return TRUE;
}
else
{ // 截断S2
for(i=1;i=S1[0];i)
T[i]=S1[i];
for(i=1;i=MAXSTRLEN-S1[0];i)
T[S1[0] i]=S2[i];
T[0]=MAXSTRLEN;
return FALSE;
}
}
Status SubString(SString Sub,SString S,int pos,int len)
{ // 求子串
int i;
if(pos1||posS[0]||len0||lenS[0]-pos 1)
return ERROR;
for(i=1;i=len;i)
Sub[i]=S[pos i-1];
Sub[0]=len;
return OK;
}
int Index(SString S,SString T,int pos)
{ // 子串定位
int i,j;
if(1=pospos=S[0])
{
i=pos;
j=1;
while(i=S[0]j=T[0])
if(S[i]==T[j]) // 继续比较后继字符
{
i;
j;
}
else // 指针后退重新开始匹配
{
i=i-j 2;
j=1;
}
if(jT[0])
return i-T[0];
else
return 0;
}
else
return 0;
}
Status StrInsert(SString S,int pos,SString T)
{ // 插入
int i;
if(pos1||posS[0] 1)
return ERROR;
if(S[0] T[0]=MAXSTRLEN)
{ // 完全插入
for(i=S[0];i=pos;i--)
S[i T[0]]=S[i];
for(i=pos;ipos T[0];i)
S[i]=T[i-pos 1];
S[0]=S[0] T[0];
return TRUE;
}
else
{ // 部分插入
for(i=MAXSTRLEN;i=pos;i--)
S[i]=S[i-T[0]];
for(i=pos;ipos T[0];i)
S[i]=T[i-pos 1];
S[0]=MAXSTRLEN;
return FALSE;
}
}
Status StrDelete(SString S,int pos,int len)
{ // 删除子串
int i;
if(pos1||posS[0]-len 1||len0)
return ERROR;
for(i=pos len;i=S[0];i)
S[i-len]=S[i];
S[0]-=len;
return OK;
}
Status Replace(SString S,SString T,SString V)
{ // 串替换
int i=1; // 从串S的第一个字符起查找串T
if(StrEmpty(T)) // T是空串
return ERROR;
do
{
i=Index(S,T,i); // 结果i为从上一个i之后找到的子串T的位置
if(i) // 串S中存在串T
{
StrDelete(S,i,StrLength(T)); // 删除该串T
StrInsert(S,i,V); // 在原串T的位置插入串V
i =StrLength(V); // 在插入的串V后面继续查找串T
}
}while(i);
return OK;
}
数据结构ADT是什么抽象数据类型的缩写 abstract data type。表示数据结构的抽象模型 。数据结构是一个数据概念的定义 , 通过各种工具对数据结构的概念类型的描述称之为抽象数据类型,简单地说是指一个数学模型以及定义在该模型上的一组操作 。
ADT包括数据数据元素,数据关系以及相关的操作 。
即ADT
{
数据对象:(数据元素集合)
数据关系:(数据关系二元组结合)
基本操作:(操作函数的罗列)
}
关于c语言adt函数和c语言ad1的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读