當前位置:
首頁 > 知識 > 數據結構與演算法2-1 線性順序存儲

數據結構與演算法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;jlast;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條法則