一,線性表的一些增強操作
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...