數據結構與演算法2-1 線性順序存儲
線性表順序結構,非鏈式:
包含兩個部分:
1.數組內存放的是要存儲的數據,同時給出最大容量;
2.最後一個數據的下標,由此可知實際存儲的數據總數。
結構體描述:
typedef struct
{
double data[max];//最多能存儲的總數,表的最大容量
int last;//last 是實際存儲數據的最後一個的下標;
}List;
List *Ptrl;
Ptrl->last+1 是存儲的數據總數,即表的實際長度
數據表效果如圖,要注意第幾個數與下標之間的+1關係,避免代碼出錯:
建立空表函數,注意申請內存需要強制轉換,否則是空指針的結構
List *Makeempty
{
List *Ptrl;
Ptrl=(List *)malloc(sizeof(List));
Ptrl->last=-1;//空表
return Ptrl;
}
查找數據函數
int find(double x,List *Ptrl)
{ int i=0;
while(Ptrl->data[i]!=x && i<=Ptrl->last)
i++;
if(i>Ptrl->last) return -1;
else return i;
}
插入函數,插入第i(1<=i<=last+2)個數據,即可以在下標0--last+1的位置上插入:
void add(double x,int i, List *Ptrl)
{
int j;
if(Ptrl->last==max-1) {printf("full"); return;}//表內已經有max個數據
if(i<1 || i>Ptrl->last+2) {printf("error"); return;}//只能插入第1個數到last+2個數
for(j=Ptrl->last; j>=i-1; j--)
Ptrl->data[j+1]=Ptrl->last[j];
ptrl->data[i-1]=x;
Ptrl->last++;//存儲實際數據個數加1,下標加1,注意更新數據總數
return;
}
刪除函數,刪除第i個(1<=i<=last+1)數據,即可以刪下標0-last的數據
void delete(int i,List *Ptrl)
{ int j;
if(Ptrl->last==-1) {printf("empty"); return;}
if(i<1||i>Ptrl->last+1) {printf("error"); return;}
for(j=i-1;j
Ptrl->data[j]=Ptrl->data[j+1];
Ptrl->last--;//實際存儲數據個數-1,下標-1,注意更新數據總數
return;
}
※總結一下遇到的幾個sockaddr數據結構的用法-philarlala
※如何用phpcms將靜態網頁生成動態網頁?
※實現容器的底層技術-每天5分鐘玩轉 Docker 容器技術(30)
※關於資料庫優化2——關於表的連接順序,和where子句的前後順序,是否會影響到sql的執行效率問題
※NetCore1.1+Linux部署初體驗
TAG:達人科技 |
※數據結構與演算法-基礎篇1.1
※數據結構與演算法
※邂逅數據結構&演算法
※偽·從零開始學演算法-1.4 結構化編程與邏輯結構
※1800G資源之3D設計理論-形式與結構
※顏體結構16法
※數據結構與演算法分析——C語言描述
※1800G資源之3D設計理論--形式與結構(視頻教程)
※從2019年開始,終結數據結構與演算法的噩夢
※CVPR2019 | 智能體張量融合,一種保持空間結構信息的軌跡預測方法
※機器學習演算法相關的數據結構
※數據結構-線性表-順序表的代碼詳解
※看圖輕鬆理解數據結構與演算法系列
※IBM 量子計算機內部結構圖首度曝光,2018量子霸權戰局預測
※淺談數據結構中樹的存儲結構
※程序員必備的數據結構與演算法書單
※python數據結構和演算法「總結」
※程序員該如何學習數據結構與演算法?
※四大行結構性存款規模達1.81萬億 是存款還是理財?
※書法字體結構36條法則