前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >线性表抽象数据结构的定义

线性表抽象数据结构的定义

原创
作者头像
鲁郭大侠
修改2020-03-04 10:07:00
5140
修改2020-03-04 10:07:00
举报

线性表抽象数据类型定义

ADT  List
    {
        数据对象:D={ai | ai ∈ElemSet,i=1,2,3,…,n n≥0}
        数据关系:R={  < ai-1,ai >  |ai-1,ai ∈D, i=2,3,…,n}
        基本操作:
            ListInit(L);//线性表初始化
            ListDestory(L);//线性表释放
            ListEmpty(L);//线性表判空
            ListClear(L);//线性表清空
            ListLength(L);//线性表的长度
            ListGet(L,i);//取表元素
            ListLocate(L,x);//按值查找
            ListPrior(L,x);//求前驱
            ListNext(L,x);//求后驱
            ListInsert(L, i,x);//插入
            ListDelete(L,i);//删除
      }

栈抽象数据类型定义

ADT Stack {
数据对象:D={ai| ai∈ElemSet, i=1,2,...,n, n≥0 }
数据关系:R1={ < ai-1,ai >  | ,ai-1,ai∈D, i=2,...,n }   
             //约定an端为栈顶,a1端为栈底。
基本操作:
    InitStack(&S)    // 操作结果:构造一个空栈 S。
    DestroyStack(&S) // 初始条件:栈 S 已存在。 
                     // 操作结果:栈 S 被销毁。
    ClearStack(&S)   // 初始条件:栈 S 已存在。 
                     // 操作结果:将 S 清为空栈。
    StackEmpty(S)    // 初始条件:栈 S 已存在。
                    // 操作结果:若栈 S 为空栈,则返回TRUE,否则返回FALSE。
                    // 判定栈是否为空栈是栈在应用程序中经常使用的操作,
                    // 通常以它作为循环结束的条件。
    StackLength(S)  //初始条件:栈 S 已存在。   
                    // 操作结果:返回栈 S 中元素个数,即栈的长度。
    GetTop(S, &e)   // 初始条件:栈 S 已存在且非空。    
                    //操作结果:用 e 返回S的栈顶元素。
                    //这是取栈顶元素的操作,只以 e 返回栈顶元素,并不将它从栈中删除。
    Push(&S, e)   //初始条件:栈 S 已存在。    
                  //操作结果:插入元素 e 为新的栈顶元素。
    Pop(&S, &e)   //初始条件:栈 S 已存在且非空。    
                  //操作结果:删除 S 的栈顶元素,并用 e 返回其值。
    StackTraverse(S, visit( )) 
                //初始条件:栈 S 已存在且非空,visit( )为元素的访问函数。 
                //操作结果:从栈底到栈顶依次对S的每个元素调用函数visit( ),
                //一旦visit( )失败,则操作失败。
    }

队列的抽象数据类型定义

ADT Queue
{
    数据对象:D={ai | ai ∈ElemSet,i=1,2,…,n, n≥0}
    数据关系:R={< ai-1 , ai > | ai-1 , ai ∈D,i=2,…,n, n≥0}
               //  约定a1端为队列头, an端为队列尾。
	基本操作:
  		int  InitQueue ( &Q ); //构造函数,队列初始化操作
   		int  DestoryQueue ( &Q ); //队列破坏操作
  		int  CleareQueue (&Q ); //置队空操作
		int  IsEmpty ( ) ; //判队空操作
   		int  IsFull ( ) ; //判队满操作
		int  EnQueue (&Q,&e); //入列操作
		int  DeQueue (&Q,&e ); //出列操作
		int  QueueLength (&Q ); //队列长度
		int  GetFront (&Q,&e ); //读取队首元素操作
}

串的抽象数据类型定义

ADT String
{
    数据对象:D={ai | ai ∈CharSet,i=1,2,…,n, n≥0}
    数据关系:R={< ai-1 , ai > | ai-1 , ai ∈D,i=2,…,n, n≥0}
                //  约定a1端为头, an端为尾。
    基本操作:
        InitString(&S)  //初始化串S
        DestroyString(&S)  //串S被销毁
        StrAssign(&T,chars)  //生成一个其值等于chars的串T
        StrCopy(&T,S)  //由串S复制得到串T
        StrEmpty(S)  //若串为空串返回TRUE否则返回FALSE
        StrLength(S)  //返回s的元素个数称为串的长度
        StrCompare(S,T)   // S>T 返回 >0 ; S=T ,返回 =0 ; S< t 返回 ;
        ClearString(&s) />/将串S清空
        SubString(&Sub,S,pos,len)   //用sub返回串S的第pos个字符起长度为len的子串
        Index(S,T,pos)   // 检索串S中是否存在和串T值相同的子串
        Replace(&S,T,V)  //用V替换串S中出现的所有与T相等的不重叠的子串
        StrInsert(&S,pos,T)  //在串S的第pos个字符之前插入串T
        StrDelete(&S,pos,len)   //从串S中删除从第pos个字符起出长度为len的子串
 }

数组的抽象数据类型定义

ADT Array
{
    数据对象:D={ai | ai ∈Set,i=1,2,…,n, n≥0}
    数据关系:
         R={< ai-1 , ai > | ai-1 , ai ∈D,i=2,…,n, n≥0}
    基本操作:
        int  Init Array ( &A ); //构造函数
        int  getElement( &A,&e,i );
        int  setElement( &A,&e,i );
        int  aLength (&A);
        int  aClear(&T );
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档