跟我學資料結構 2 陣列的遍歷 插入和刪除

2021-05-25 17:04:00 字數 4215 閱讀 4078

跟我學資料結構:

(2)

陣列的遍歷、插入和刪除

摘要:

產生陣列,遍歷陣列,查詢陣列中的最小值,在指定位置插入和刪除元素。

本文仍然是作為學習資料結構的基礎。

**和執行結果

本課內容比較單純,我們直接上**,同學們可以多次執行**,觀察結果。

code:

/* desc: this program illustration  how to use an array.

*/#include 

#include

#include

#include 

#include 

#include 

using

namespace std;   

const

int max_size = 10;    

int data[max_size];   

int pos = 0;   

void showarray()   

cout << endl;   

}   

int main(int argc, char* argv)   

showarray();   

cout << " find out the minimum value in the array"

<< endl;   

int pos = 0;   

for(i = 1; i < max_size; i++)   

}   

cout << " the minimum value in the array is  "

<< "data[ "

<< pos << " ] = "

<< data[pos] << endl;   

cout << "generate a new position and new value, then insert it into the array"

<< endl;   

int newpos = rand() % max_size;   

int newvalue = rand() % 100;   

cout << "new pos = "

<< newpos <<  ", and new value = "

<< newvalue << endl;   

for( i = max_size-1; i > newpos; i--)   

::data[newpos] = newvalue;   

showarray();   

cout << " generate a new position , and make the value is zero"

<< endl;   

newpos = rand() % max_size;   

cout << " new pos = "

<< newpos << endl;   

::data[newpos] = 0;   

showarray();   

cout << " let's delete the no. "

<<  newpos << " element in the array,/n"

<< " and make the last value is minus one."

<< endl;   

for(int i = newpos; i    

::data[max_size-1] = -1;   

showarray();   

return 0;   

}   

test start here

this program illustration how to use an array.

initialize array by random numb:

rand_max = 32767

data[ 0 ] = 42

data[ 1 ] = 28

data[ 2 ] = 16

data[ 3 ] = 4

data[ 4 ] = 34

data[ 5 ] = 71

data[ 6 ] = 12

data[ 7 ] = 30

data[ 8 ] = 99

data[ 9 ] = 14

find out the minimum value in the array

the minimum value in the array is data[ 3 ] = 4

generate a new position and new value, then insert it into the array

new pos = 4, and new value = 53

data[ 0 ] = 42

data[ 1 ] = 28

data[ 2 ] = 16

data[ 3 ] = 4

data[ 4 ] = 53

data[ 5 ] = 34

data[ 6 ] = 71

data[ 7 ] = 12

data[ 8 ] = 30

data[ 9 ] = 99

generate a new position , and make the value is zero

new pos = 6

data[ 0 ] = 42

data[ 1 ] = 28

data[ 2 ] = 16

data[ 3 ] = 4

data[ 4 ] = 53

data[ 5 ] = 34

data[ 6 ] = 0

data[ 7 ] = 12

data[ 8 ] = 30

data[ 9 ] = 99

let's delete the no. 6 element in the array,

and make the last value is minus one.

data[ 0 ] = 42

data[ 1 ] = 28

data[ 2 ] = 16

data[ 3 ] = 4

data[ 4 ] = 53

data[ 5 ] = 34

data[ 6 ] = 12

data[ 7 ] = 30

data[ 8 ] = 99

data[ 9 ] = -1

產生的陣列: 位置

值 備註

0 42

1 27

2 16

3 4最小值 4

34 5

71 6

12 7

30 8

99 9

14在位置

4插入新值53

位置 值

原來的位置 0

42 0

1 27

1 216 2

3 43 4

53new 5

34 4

6 71

5 712 6

8 30

7 999 8

10 14

超出範圍,

刪除位置6的值

位置 值

原來的值 0

42 1

27 2

16 3

4 453 5

34 71

6 12

12 7

30 30

8 99

99 9

-1產生指定範圍的隨機數

為了**執行方便,我們使用了隨機數。

隨機數的使用,請參考

插入和刪除的演算法分析

無論插入和刪除,都會影響到插入位置後面的元素。執行不好的話,整個陣列元素的值都會移動,效能非常不好。

資料結構的鍊錶可以很好的解決陣列面臨的效能問題,敬請期待。

學習方法

有同學可能會想,這傢伙真囉嗦,到現在都還沒有進入到資料結構的真在內容。

這同學沒錯,的確還沒進入到資料結構真正**的內容。但前幾課是基礎啊。有些同學為不會學資料結構發愁,原因就是沒有打好基礎,並且還沒有找到通過寫**來學習資料結構的方法。

本「老師」的課程特點就是,通過**來學習,教會同學們學習的方法。

跟我學資料結構之演算法初步概念

學完第一篇的概念,不知道大家對資料結構有沒有感覺呢?接下來我們介紹一下和演算法有關的概念。說道演算法,可能大多數同學會感覺很難,的確演算法是一塊硬骨頭,但是學好它有重要的意義。圖靈獎得主,計算機科學家n.wirth 沃斯 提出 程式 演算法 資料結構 所以,作為程式開發人員不僅要懂資料結構,還要和演...

跟我學資料結構 線性表的鏈式儲存結構

鏈式儲存定義 為了表示每個資料元素與其直接後繼元素之間的邏輯關係,每個元素除了儲存本身的資訊外,還需要儲存指示其直接後繼的資訊。表頭結點 鍊錶中的第乙個結點,包含指向第乙個資料元素的指標以及鍊錶自身的一些資訊。資料結點 鍊錶中代表資料元素的結點,包含指向下乙個資料元素的指標和資料元素的資訊。尾結點 ...

D F學資料結構系列 插入排序

插入排序 insertion sort 插入排序由p 1趟 pass 排序組成。對於p 1趟到p n 1趟,插入排序保證從位置0到位置p 1上的元素為已排序狀態。插入排序利用了這樣的事實 位置0到位置p 1上的元素都是已排過序的。排序過程 如下圖,在第p趟,我們將位置p上的元素向左移動到它在前p 1...