跟我學資料結構:
(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...