算法—顺序表(二)
一、順序表的結構
表頭:存儲順序表的信息
包括數據區的容量和當前表中已有的元素個數
數據區:存放表中元素數據
我們在創建一個數據表的時候先明確要存儲多少的數據,順序表數據要求連續的存儲在內存空間中,所以先向計算機內存中申請連續的內存空間,而并不是用一個再取申請一個,所以要先預估容量是多少
如果用一個取申請一個內控地址,內存地址不會連續,可能有其他的程序在計算機中申請了內存地址
二、順序表分類
一體式順序表:表頭與數據區存放在一起
如圖為:內存容量為為4,元素個數為3,存儲的數據為12,34,56,3個數據
分離式順序表:表頭與數據區分開存儲
如圖:內存容量為4,元素個數為3,存儲的數據是12,34,56三個數據
三、順序表擴充
擴充需要申請一塊更大的數據區
一體式順序表:表頭和數據區存儲在一起,擴容時表頭也要跟著變化
分離式順序表:表頭和數據區分開存儲,擴容時表頭不足要變化
四、一體式順序表和分離式數據表的區別
1、查詢數據
a=[12,34,56]
通過第一個地址,根據公式可以得到其他數據所在的地址
分離式數據表:根據表頭內存地址先要拿到數據區的內存地址(第一個數據所在的內存地址),再根據第一個地址去拿其他數據的地址
2:擴容
例如:要在列表中新增2個數據78,90
a=[12,34,56,78,90]
原內存空間不夠,需要申請內存空間
一體式數據表表頭需要改變
分離式數據表表頭不改變
總結
- 上一篇: 算法—顺序表之列表的扩容机制(pytho
- 下一篇: 栈——用顺序表实现栈操作