专栏首页高级程序设计线性表抽象数据结构的定义
原创

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

线性表抽象数据类型定义

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 );
}

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 指针与数组

    main() {   int iVal[M][N]; //定义一个l二维数组   int *iPtr; //定义一个指针指向二位s数组

    鲁郭大侠
  • C语言之关键词记忆

    鲁郭大侠
  • 基于SQL的10进制转36进制函数

    在数据库应用编码中,通常需要对某些数据进行编码,常用编码规则为基于数值的十进制编码,基于数字与字符的十六进制编码,如果数据量再大一些,则十六进制不能满足,由于在...

    鲁郭大侠
  • 通过域名获取主机IP -- struct addrinfo

    参考书籍:《UNIX环境高级编程》 (APUE,男神的书,出第三版了,有需要的私信我)

    看、未来
  • CAS导致的ABA问题以及解决方案

    CAS算法实现一个重要前提需要取出内存中某时刻的数据,而在下时刻比较并替换,那么在这个时间差类会导致数据的变化。

    Liusy
  • 别错过这张AI商用清单:你的难题可能被一个应用解决(终篇)

    大数据文摘
  • python: 大小写转换 内建函数

    JNingWei
  • 山海传说ai 设计

    一 城镇ai: 1.1 任务npc ai:当鼠标指向时,npc头顶会出现名字。并高亮显示npc模型。鼠标移开 后npc恢...

    李海彬
  • PonyAI交首份无人出租成绩单:日均出行70.6次,一月内增长近千订单,15%拼车

    其向加州公共事业委员会(CPUC)提交的最新季度报告显示,试运行19天(截至10月31日),小马智行(Pony.ai)的L4级自动驾驶汽车已经完成180次出行服...

    量子位
  • Python 中文图片OCR

    用户1130025

扫码关注云+社区

领取腾讯云代金券