線性表之順序表增強操作

2021-07-10 23:12:39 字數 2323 閱讀 5424

一,線性表的一些增強操作

1,合併有序順序表

兩個索引,分別指向兩個順序表的0索引,然後進行相互比較大小,索引前移.

需要注意的是,兩個順序表可能會有乙個先遍歷完,所以最後判斷是否要有剩餘未遍歷的

2,刪除某個範圍內的元素

和刪除某個元素思路一致

3,將順序表元素進行重組, 小於等於某個value的放在左端,大於這個value的放在右邊

類似快速排序的一趟排序過程. 使用兩個索引, 乙個頭,乙個尾,相向移動

4,刪除順序表中所有重複的元素

初試條件可以把[0]做不重複區間,然後1索引出與[0]區域比較,如果沒有重複的,放入區域[0 1]

然後2索引與[0 1]進行比較,如果不重複,放入區域[0,1,2]

....

直至完畢

5,刪除有順序表中所有重複的元素

因為有序,所以一趟遍歷就可以解決,每次i索引處的值和i-1處的索引值比較即可

二,對應**如下:

package com.zl.ds;

public class sequencelistalgorithm

if (second == null)

int i = 0, j = 0;

int firstlen = first.size(), secondlen = second.size();

sequencelistmergedlist = new sequencelist(firstlen + secondlen);

int index = 0;

// first和second迴圈比較,直到其中乙個訪問完畢

while (i < firstlen && j < secondlen) else

} // first和second長短不一,未訪問完畢的繼續進行merge

while (i < firstlen)

while (j < secondlen)

return mergedlist;

} /**

* 從給定的順序表中刪除值在x到y之間的所有元素

* * @param list

* 順序表

* @param x

* @param y

*/public void deleterange(sequencelistlist, int x, int y)

int index = 0;

for (int i = 0, len = list.size(); i < len; i++) else

} for (int i = index; i < list.size(); i++)

list.setsize(index);

} /**

* 小於等於value的值放在左邊,大於value的值放在右邊

* * @param list

* @param value

*/// 利用兩個指標前後查詢,直到兩者相遇

public void moveelembyvalue(sequencelistlist, int value)

int front = 0, rear = list.size() - 1;

while (front < rear)

while (front < rear && list.get(rear) > value)

int temp = list.get(front);

list.set(front++, list.get(rear));

list.set(rear--, temp);

} }/**

* 刪除順序表中所有重複的元素

* * @param list

*/public void deletealldul(sequencelistlist)

int index = 1;

for (int i = 1, len = list.size(); i < len; i++)

}if (flag)

} list.setsize(index);

} /**

* 從有序順序表中刪除重複的元素,並使剩下的元素相對位置不變

* * @param list

*/public void deleleorderedlistalldul(sequencelistlist)

int index = 0;

for (int i = 1, len = list.size(); i < len; i++)

} list.setsize(++index); }

}

線性表之順序表操作

求後繼是指 輸入乙個元素值 而不是位置 求該元素在順序表中的直接後繼元素值。注意 對每個功能進行測試時,要求把不合法的情況也測試一下。具體見下面的測試用例。3 驗收 測試用例 通過選單呼叫各個操作,測試點 沒有初始化前進行其他操作,程式是否能控制住 即,如果沒有初始化線性表,其他的功能是無法正常進行...

線性表之順序操作

順序表 陣列a i 有乙個基址a 相當於 a 0 還有下標i,代表第i 個元素,陣列的最大容量,假定宣告乙個陣列為a 10 則該陣列的容量為10 化為指標形式 a i a i 就相當於 要注意的是a是乙個常量,它代表的是陣列的首位址,是不可以發生變化的 關於陣列的擴容,從新給陣列分配空間始終在原有的...

線性表之順序表基本操作

sqheader.h ifndef sqheader h included define sqheader h included 順序表的儲存結構 define maxsize 50 typedef char elemtype typedef struct sqlist endif sqheader...