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

2020-03-04 10:07:00 浏览数 (1)

线性表抽象数据类型定义

代码语言:javascript复制
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);//删除
      }

栈抽象数据类型定义

代码语言:javascript复制
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( )失败,则操作失败。
    }

队列的抽象数据类型定义

代码语言:javascript复制
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 ); //读取队首元素操作
}

串的抽象数据类型定义

代码语言:javascript复制
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的子串
 }

数组的抽象数据类型定义

代码语言:javascript复制
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 );
}

0 人点赞