【数据结构】线性结构

一、认识线性表

线性表是一个线性结构(数据元素之间存在一对一的关系)。它是由n(n>=0)个具有相同类型的数据元素a1,a2,a3.....组成的有限序列,这些数据元素称为结点,记录或表目。线性表中除第一个元素外,其他元素有且仅有一个直接前驱;除最后一个元素外,其他元素有且仅有一个直接后继。

线性表的存储结构主要有以下两种:

 

  • 定长的顺序存储结构,简称顺序表。程序通过创建数组,分配一块连续的存储空间来建立这种存储结构,主要特点为逻辑相邻,物理相邻
  • 边长的顺序存储结构,简称链表(链式存储结构)。链式存储结构利用指针将线性表中前后相邻的两个元素连接起来以表示数据元素的线性关系。主要特点为逻辑相邻,物理不一定相邻

 二、线性表的抽象数据类型

ADT List{   

             数据对象:D = { ai | ai∈ElemSet, i = 1, 2, …, n, n ≥ 0 }

             数据关系:R = { | ai-1, ai ∈D, i = 1, 2, …, n }   

             基本操作:       

                         LinearList * Init_List( LinearList *L )             

                                              初始条件:线性表L不存在;           

                                             操作结果:构造一个空的线性表;       

                        void Destory_List( LinearList *L)             

                                             初始条件:线性表L已经存在;             

                                             操作结果:销毁线性表L;       

                        LinearList * Clear_List( LinearList *L )             

                                              初始条件:线性表L已经存在;           

                                             操作结果:将线性表L置为空表;

                        int List_Empty( LinearList *L)             

                                             初始条件:线性表L已经存在;           

                                             操作结果:若L为空表,则返回TURE(或1),否则返回FALSE(或0);

                        int List_Length( LinearList *L)             

                                             初始条件:线性表L已经存在;           

                                             操作结果:返回L中数据元素的个数;

                        int Getdata_List( LinearList *L,int i)             

                                             初始条件:线性表L已经存在,并且满足1<=i<=ListLength(L);           

                                             操作结果:将L中第i个元素值返回;

                         int Search_List(LinearList *L,int e,int compare())

                                             初始条件:线性表L已经存在,compare()为数据元素判定函数;           

                                            操作结果:返回L中第一个与e满足compare()的数据元素的位序。若不存在,则返回值为0;

                         void PriorElem(LinearList *L,int e,int *pre_e)

                                             初始条件:线性表L已经存在;            

                                            操作结果:若e是L的数据元素,而且不是第一个数据元素则用pre_e返回他的前驱;

                                                               否则操作失败,pre_e无意义。

                            void PriorElem(LinearList *L,int e,int *next_e)

                                             初始条件:线性表L已经存在;            

                                            操作结果:若e是L的数据元素,而且不是最后一个数据元素则用next_e返回他的后继;

                                                               否则操作失败,next_e无意义。

                             LinearList *Insert_List( LinearList *L,int i,int e )             

                                              初始条件:线性表L已经存在并且满足1<=i<=ListLength(L)+1;           

                                              操作结果:在L中第i个位置前插入新的数据元素,L的长度+1;

                            LinearList *Delete_List( LinearList *L,int i,int *e )             

                                              初始条件:线性表L已经存在并且非空满足1<=i<=ListLength(L);           

                                              操作结果:删除L中第i个位置的数据元素,并用e返回其值,L的长度-1;

}ADT List;

你可能感兴趣的:(【数据结构】线性结构)