陣列結構 陣列(一)

2021-10-06 12:54:58 字數 3171 閱讀 9857

陣列的基本操作包括增、刪、查、改四種基本的操作。注:這裡假設陣列都是無序的

插入可以分為尾部新增和中間插入兩種情況,中間插入元素本質是將 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...