從有序順序表中刪除所有其值重複的元素,使表中的所有元素的值均不同。
用雙指標演算法,初始時將第乙個元素視為非重複的有序表,之後依次判斷後面的元素是否與前面非重複的有序表的最後乙個元素相同,若相同的話,則繼續向後判斷,若不同的話,則插入到前面的非重複有序表的最後,直到判斷到表尾結束。
bool
delete_same
(seqlist &l)
將兩個有序順序表合併為乙個新的有序順序表,並由函式返回結果順序表。
按順序不斷取兩個順序表表頭元素較小的結點存入新的順序表中,直到有乙個表中沒有元素,則將另乙個表剩餘的元素加到新的順序表後面。
bool
merge
(seqlist a,seqlist b,seqlist &c)
while
(i//a表還有剩餘元素
c.data[k++
]= a.data[i++];
while
(j//b表還有剩餘元素
c.data[k++
]= b.data[j++];
c.length = k;
return
true
;}
已知在一維陣列 a[m+n] 中依次存放兩個線性表 a 和 b。試寫乙個函式,將陣列中的兩個順序表的位置互換,即將 b 中元素放在 a 中元素的前面。
先將陣列中的所有數逆置,再把前 n 個數逆置,最後將陣列後 m 個數逆置就可以了。
void
reverse
(int a,
int left,
int right,
int length)
void
exchange
(int a,
int m,
int n,
int length)
線性表 a 中的元素遞增有序切按順序儲存在計算機內。要求設計乙個演算法,完成用最少時間在表中查詢數值為 x 的元素,若找到則將其與後繼元素位置相互換,若找不到則將其插入表中並使表中元素仍遞增有序。
順序儲存的線性表遞增有序,可以順序查詢,也可以二分查詢,因為題目要用最少的時間,所以用二分查詢。
void
find_x
(int a,
int&length,
int x)
// 如果找到該元素
if(a[l]
==x && l!=n-1)
else
// 如果未找到該元素
length++;}
}
資料結構 線性表的順序表示
1.相關概念 2.順序表的型別定義 順序表的儲存結構 define max 100 順序表可能達到的最大長度 typedef struct sq sqlist elemtype是乙個抽象資料型別 可以是int,float,double等或者是自定義的資料型別。在實際使用是可以使用int,float等...
資料結構之線性表(順序表示)
順序表定義 define maxsize 50 typedef struct sqlist 陣列動態分配 define maxsize 50 typedef struct sqlist 動態分配的語句 c l.data elemtype malloc sizeof elemtype initsize...
資料結構 線性表的順序表示(6 10)
6 從有序表中刪除所有其值重複的元素,使表中所有元素均不同。演算法思想 相同元素一定在連續的位置上,所以如果不同則插入到前面所有非重複的有序表的最後。void del all du sqlist l delete all duplicate else l.data i count l.data i ...