問題描述:編寫一個順序表的成員函數,實現對順序表就地逆置的操作。所謂逆置,就是把(a1,a2,a3,...,an)變成(an,an-1,..,a2,a1);所謂就地,即逆置后的數據元素仍在原來順序表的存儲空間中
涉及變量:temp:Object型變量,用作中轉站
i:int型變量,進行交換的元素下標
j:int型變量,進行交換的元素下標
涉及教材:《數據結構——Java語言描述(第2版)》 清華大學出版社
思路:
就逆置而言,一般有兩種做法,就地逆置和開辟一個新的順序表空間存放逆置后的數據元素。
后者的思路是先申請與原有的順序表空間一樣大的順序表空間,再從原有順序表的后面開始讀取元素,依次放入新的順序表
這種方法相對簡單,但所占的空間大,不適用於數據元素過多的情況
就地逆置,一般是通過一個中間變量,使前后元素交換位置達成目的
當i=0,j=length()-1時,先將a1的值存儲在temp中,再將a1賦值為an,最后將an的值賦為原先的a1,即temp
這是比較常見的交換數據元素的方法,不僅僅適用於本題,在排序中也經常用到
代碼如下:
以上是對順序表就地逆置的一些看法,希望對各位有所幫助
190115 Rewivy