C語言數據結構之順序表

線性表是最經常使用且最簡單的一種數據結構。一個線性表是n個數據元素的有限序列,序列中的每一個數據元素,能夠是一個數字,能夠是一個字符,也能夠是複雜的結 構體或對象。例如:1,2,3,4,5是一個線性表,A,B,C,D...Z是一個線性表,一列列車的車箱1,車箱2...車箱n是一個線性表。編程

線性表的機內表示法(又稱存儲結構)有2種,一種是順序存儲結構,另外一種是鏈式存儲結構。數組

順序存儲結構,顧名思義就是按順序來存儲的一種存儲結構,好比線性表(1,2,3,4,5),共計5個元素,數據結構

每一個int型的數據元素假設佔用4個存儲單元,假設第1個元素數字1的存儲地址是1000,則第2個元素數字2的存儲地址是1004,第3個元 素數字3的存儲地址是1008,依此類推,第n個數據元素的存儲地址是LOC(an) = LOC(a1)+(n-1)k.(k表示每一個數據元素佔用的存儲單元的長度)編程語言

顯而易見,這種存儲結構,相鄰元素在物理位置上也相鄰。學習

一般,咱們把採用這種存儲結構的線性表稱爲「順序表」。spa

有了基本的概念以後,咱們就能夠使用編程語言進行描述,使用C、C++、C#、Java等均可以,這篇文章我使用C語言描述。3d

1、順序表code

先定義好線性表,而後就能夠對它進行操做了,常見的線性表的基本操做有:建立線性表、查找元素、插入元素、刪除元素、清空、歸併等。對象

下面我會貼出代碼,歡迎你們一塊兒學習交流!blog

推薦下我本身的C/C++學習裙:231-662-552,無論你是小白仍是大牛,小編我都挺歡迎,不按期分享乾貨,包括我本身整理的一份2018最新的C/C++資料和零基礎入門教程,歡迎初學和進階中的小夥伴。

 1 #define MAX_SIZE 20
 2 
 3 int arr[MAX_SIZE] = { 0 };  4 
 5 int size = 0;//有效元素個數  6 
 7 //標識符
 8 
 9 void arr_init() 10 
11 { 12 for (int i = 0; i < 10; i++) 13 { 14 arr[i] = -1; 15 } 16 } 17 //賦值
18 
19 void assignment() 20 { 21 for (int i = 0; i < 10; i++) 22 { 23 arr[i] = i; 24 size++; 25 } 26 }

 1 //輸出
 2 
 3 void arr_show()  4 
 5 {  6 for (int i = 0; i < size; i++)  7 {  8 printf("%d ", arr[i]);  9 } 10 printf(" "); 11 } 12 //插入數據
13 
14 int arr_add(int n,int data) 15 { 16 if (n>size&&n <MAX_SIZE) 17 { 18 printf("添加失敗,插入位置偏大!"); 19 return 0; 20 } 21 
22 if (n >= MAX_SIZE) 23 { 24 printf("添加失敗,數組越界!"); 25 return 0; 26 } 27 
28 for (int i = size; i > n; i--) 29 { 30 arr[i] = arr[i-1]; 31 } 32 
33 arr[n] = data; 34 size = size + 1; 35 return 1; 36 }

 1 /刪除元素  2 
 3 int arr_del(int n)  4 {  5 if (n > size&&n<MAX_SIZE)  6 {  7 printf("下表偏大,此位置無元素! ");  8 return 0;  9 } 10 if (n>MAX_SIZE) 11 { 12 printf("數組越界! "); 13 return 0
14 } 15 
16 for (int i = n; i < size - 1; i++) 17 { 18 arr[i] = arr[i + 1]; 19 } 20 arr[size - 1] = -1; 21 --size; 22 }

 1 /修改元素  2 
 3 int arr_change(int n,int data)  4 {  5 if (n > size&&n<MAX_SIZE)  6 {  7 printf("下表偏大,修改失敗! ");  8 return 0;  9 } 10 
11 if (n>MAX_SIZE) 12 { 13 printf("數組越界! "); 14 return 0; 15 } 16 arr[n] = data; 17 } 18 
19 //查詢元素
20 
21 void arr_query(int n) 22 { 23 printf("%d", arr[n]); 24 } 25 
26 int main() 27 { 28 for (int i = 1; i < 11; i++) 29 { 30 printf("%d ", i); 31 } 32 printf(" "); 33 arr_init(); 34 assignment(); 35 arr_show(); 36 arr_del(5); 37 arr_change(5,22); 38 arr_show(); 39 arr_query(6); 40 printf(" size==%d", size); 41 
42 getchar(); 43 return 0; 44 } 45 
46 小子初學數據結構,若有不足之處,歡迎大神指正。
相關文章
相關標籤/搜索