陣列的基本操作包括增、刪、查、改四種基本的操作。注:這裡假設陣列都是無序的
插入可以分為尾部新增和中間插入兩種情況,中間插入元素本質是將 i+1
i+1i+
1至最後乙個索引對應的元素全部向後移動一位。
不過插入元素時需要擴容。擴容,就是擴大數i
ii組的長度。當插入元素時,若發現陣列長度已滿,此時需要擴容陣列,操作為建立乙個新的同型別的陣列,長度為原來的2倍,將原始陣列的元素拷貝到新陣列中,此時即可插入新元素。
插入實現:
def
insert
(lst, i, e)
:"""
插入特定位置的元素
"""length =
len(lst)
if i <
0or i > length:
# 邊界值處理,如果插入下標超過陣列長度或者插入下標小於0,則視為插入異常,結束演算法
print
('插入位置超過陣列長度,插入失敗'
)return
our_list = lst[:]
# 複製原表,防止原表改變-1
])# 擴大列表長度,方便插入元素
for j in
range
(length -
1, i,-1
):# 向後移動元素
our_list[j]
= our_list[j -1]
our_list[i]
= e return our_list
測試結果:
lst =[0
,1,2
,4,5
]our_lst = insert(lst,3,
3)print
('原陣列:'
, lst)
print
('插入後陣列'
, our_lst)
#結果:
#原陣列: [0, 1, 2, 4, 5]
#插入後陣列 [0, 1, 2, 3, 4, 5]
查詢比較簡單
查詢實現:
查詢特定位置元素
def
find_i
(lst, i)
:'''
查詢特定位置的元素
:param lst: 元素陣列
:param i: 查詢i位置的元素
:return:
'''if i <
0or i >=
len(lst)
:# 邊界範圍處理
print
('下標{}超出陣列範圍'
.format
(i))
return
for j in
range
(len
(lst)):
if j == i:
return lst[i]
""" 上面只是做下基礎演示
最簡單的直接就是: return lst[i]
"""print
(find_i(our_lst,4)
)#結果:
#4
查詢特定值元素
def
find_value
(lst, e)
:'''
查詢特定的值e的元素下標
:param lst: 元素陣列
:param i: 查詢i位置的元素
:return:
'''iflen
(lst)==0
:# 邊界範圍處理,空表
print
('陣列為空,無法查到元素{}'
.format
(e))
return
for i in
range
(len
(lst)):
if lst[i]
== e:
return i
# 無法查到元素時處理
print
('元素{}不在陣列中'
.format
(e))
return
def
update
(lst, i, e)
:"""
更新特定位置i的元素為特定值e,這裡在原表基礎上改變,即修改原表
"""if i <
0or i >=
len(lst)
:# 邊界範圍處理
print
('下標{}超出陣列範圍'
.format
(i))
return
lst[i]
= e return lst
移除指定索引的元素本質上是將i+1
i+1i+
1至最後乙個索引對應的元素全部向前移動一位。
def
remove
(lst, i)
:"""
移除特定位置i處的元素
:param lst:
:param i:
:return:
"""length =
len(lst)
if i <
0or i >= length:
# 邊界範圍處理
print
('下標{}超出陣列範圍'
.format
(i))
return
if i ==
(length -1)
:# 刪除末尾位置的元素時直接刪除
return lst[:-
1]our_lst = lst[:]
# 防止原表改變
for j in
range
(i +
1, length)
: our_lst[j -1]
= our_lst[j]
return our_lst[:-
1]# 這裡改變陣列的長度
以上內容比較簡單,這裡主要是回顧一下資料結構中陣列的基礎知識 結構陣列,結構陣列型別(typedef)
文章 於 首先請看示例 注意藍色部分 include include int main void acrcell,adjmatrix 2 3 struct student mg 2 3 int i,j adjmatrix t arcs for i 0 i 2 i for j 0 j 3 j scan...
結構陣列與結構指標陣列
這幾天白天上課,晚上回來就睡了,沒有更新。c語言學完了,但是學習的腳步不能停止,深入學習c語言。今天回來早,寫一篇結構陣列和結構指標陣列的總結。先定義乙個結構陣列 struct stu 注意 定義的結尾有個分號,千萬不要忘了。struct stu a,struct stu p a 定義乙個結構體指標...
C 一 結構體陣列
swap.h include using namespace std 函式的宣告 void swap int a,int b swap.cpp include swap.h 函式的定義 void swap int a,int b main函式 includeusing namespace std i...