那么我们再看一下选择排序。wade selects or tint数组a in tn。将a中整数序列重新排列成至小有大大有序的整数序列,我们来看一下这个程序。for循环,第一个for循环呢是零到n- 1 I=0。以及呢,我们的I小于n- 1第二个for循环是k=I+1以及呢k小于n。那么,它的操作呢?是比较数据元素的操作,那么就就要执行呢?那么,这样一个。这些到到I这样一个从I呢到ni+1这样一个I+1呢到n这样一个,
均有唯一的前驱。那么,我们来看一下线性表的定义。线性表中的元素个数n定义为其长度。n=0的线性表呢?称之为空表。那么,我们的线性表呢?那么可以这样呢?这样一个写字,这样一个方式,比如说a1a2到aai- 1 AI AI加一直到an。在非空线性表中的每个元素呢,都有一个确定的位置,比如说a2是第一是第一个元素an是最后一个元素。
AI是第I个元素,称I为数据元素。AI呢在线性表中的这样一个序位。线性表的基本操作呢?那么可以分为四大类,基本操作,比如说。初始化。操作结构销毁,操作引用型操作以及呢,加工型操作。我们来看一下初始化操作。初始化操作initial is t选l的地址操作,结果呢,是构造一个空的线性表l。
销毁结构操作destroy list al的地址,那么它的结果呢?就是我们。线性表了,销毁掉我们的线性表以后。那么,以及我们的引用型操作list empty list length prior element next element get element location locate element。alisttravescy那么,这些引用型操作不涉及表结构的变化。那么,我们来看一下。加工型操作。表的结构呢?有变化,比如说clear list。
put empty element list insert和list delete那么这些呢,就表的结构呢有变化。我们可以了。用上述定义的线性表类型呢,可以实现其他更复杂的操作。我们来看一下线性表的顺序,表示和实现。那么,首先我们来看一下顺序表。顺序表了是什么了?顺序表这里呢,我们讲的是它的存储结构。顺序表。那么所以呢,我们所以呢,
那么,在高级语言的层次呢?通常以一组数组呢来存放。依次的存放线性表数据元素的顺序表,并且可以通过数组元素的下标,方便的访问数据元素,那么所以这里给大家知道。我们的顺序表了,可以了直接进行访问,它可以了。要访问某个数据元素了,那么比较方便。那么我们看一下顺序表的C语言描述。首先是define list initial size。define.
list.instrument type define struct empty type.信号element。inter lens inter dis size inter.increment size.那么sq list那么这个呢?就是我们顺序表的C语言描述的部分。那么我们再来看一下。构造一个空线性表woi DIN lists q。s qu list.选要的地址。刚才我们看到了。我们的cq list呢?表示的。是我们的这样一个结构体。
接下来我们看一下这样一个。它的这样一个程序部分,这样一个程序部分语句部分l element=6。element type list in the size.if.这样一个l element。那么取反那么exit overflow?哈哈哈。l认识等于零线性表的当前长度。l list size=list inter size,initial size。l increment size,那么等于我们的一。list increment.那么,
增补空间量。那么我们看一下构造空线性表的这样一个部分。那么,首先呢,是我们的。l element.好吧,这样一个结构体当中这样一个。element啊,是我们的六。element type list in the size.那就是这里了,是为顺序表了分配一个大小了。v max size的这样一个数组空间。那么if。
取反l element exit如果呢?存储失败。那么,分存储分配失败,那么就退出。那么,接下来呢?l认识等于零线性表的空表的长度呢?是零。l list size.我要说我们的list initial size。l increment size=list increment那么增补空间,空间量那么这是我们的构造空的线性表的这样一个方式。那么,这是我们构造的新的空线性表,
那么这样一个构造的这样一个方式。查找。元素这样一个方式int locate element csq SQL SQL l。element type e.在顺序表中呢,查询第一个满足判定条件的数据元素,那么若存在了,则返回它的位序,否则呢,返回零。那么I=1。I的初值呢,为第一元素的位序p=l点。element.p的初值呢?
元素插入元素呢,是void list int inserts qc list li nti element。e element type e在顺序表l的第I个元素之前呢?插入新元素。e.I的合法范围呢,是我们的一小于等于I,小于等于l。小l点愣是加一。那么我们看一下这个程序q等于那么取地址。l点。element i- 1。那么q呢?表示要插入的位置。for p等于取地址l点element length- 1。
那么比如说。我们要删除第I个元素,原来呢,在我们的存储空间当中呢?我们是存放的a1a2,一直到ai- 1 AI AI加,一直到an。那么,我们删除了第a,第I个元素AI之后呢?我们这个时候呢?AI后面的元素呢?就要向前移动,就要向前移动,向左移动一个移动移动移动位置,
那么向前移动。那么AI+1呢,就变成了原来AI的位置,那么到an呢,那么就变得了,变成了它之前的这样一个位置,那么就是我们插入元素的方,删除元素的方式。那么我们看一下这个语句。void list delete SQ SQ sq list li nti element type e.if I小于一或者I大于认识,return error删除位置不符合不合法,如果在第I在第I第一个元素之前。并或者说I大于表长,那么删除为return返回一个错误,
返回一个error。那么p等于取地址l element i- 1。p为被删除元素的位置一等于星p。把被删除元素的值啊,复制给e。q等于。l element.加l认识减一。这是表尾元素的位置。那么for加加p for小于等于q加加加p。那么,新p+1。星p- 1等于星p那么被删除之元素之后的元素呢?左移。最后呢,