数据结构--线性表顺序存储(顺序表)
生活随笔
收集整理的這篇文章主要介紹了
数据结构--线性表顺序存储(顺序表)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
特點:
線性表的順序存儲是指用一組地址連續的存儲單元依次存儲線性表中的各個元素。
作用:
線性表中在邏輯結構上相鄰的數據元素存儲在相鄰的物理存儲單元中,即通過數據元素物理存儲的相鄰關系來反映數據元素之間邏輯上的相鄰關系。
順序存儲的實現:
一維數組存儲順序表中的數據
缺點:
大小固定,使用前需要分配地址,因此當表長變化較大時,難以確定合適的存儲規模。插入刪除操作復雜性太高。
優點:
元素訪問的時候O(1)訪問。
實現代碼:
#include<bits/stdc++.h> #define MaxSize 10000 //順序表借助數組實現,然后必須要規定大小才能分配地址。宏定義 using namespace std; template <class T> class SeqList { private:T data[MaxSize]; // 存放數據元素的數組int length; // 線性表的長度 public:SeqList( ){length=0; // 無參構造函數}SeqList ( T *a, int n ); // 有參構造函數int get_Len ( ) {return length; } // 求線性表的長度void print_List ( ) ; // 打印線性表void ins_Loc(int i, T x);// 在線性表中第 i 個位置插入值為 x 的元素void del_Loc(int i);//刪除線性表的第 i 個元素T get_Loc(int i); // 按位查找,取線性表的第 i 個元素T ser_Loc(T x); // 按值查找,求線性表中值為 x 的元素序號~SeqList( ) { } // 析構函數為空,數組是程序結束自動回收內存,無需寫析構函數 }; template <class T> SeqList<T>:: SeqList(T a[], int n) //帶參數構造函數 {if (n>MaxSize)throw "超出限制"; //拋出異常情況length=n;for(int i=0; i<n; i++)data[i]=a[i]; } template <class T> void SeqList<T>::ins_Loc(int i, T x) {if (length>=MaxSize)throw "超出限制";if (i<1 || i>length+1)throw "位置非法";length++;for (int j=length; j>=i; j--)data[j]=data[j-1];data[i-1]=x; } template <class T> void SeqList<T>::del_Loc(int i) {if (length==0)throw "空表";if (i<1 || i>length)throw "位置非法";for (int j=i; j<length; j++)data[j-1]=data[j];length--;return ; } template <class T> T SeqList<T>::get_Loc(int i) {if (i<1 && i>length)throw "查找位置非法";elsereturn data[i-1]; } template <class T> T SeqList<T>::ser_Loc(T x) {for (int i=0; i<length; i++)if (data[i]==x)return i+1 ; //下標為i的元素等于x,返回其序號i+1return 0; //退出循環,說明查找失敗 } template <class T> void SeqList<T>:: print_List() {for(int i=0;i<length;i++) cout<<data[i]<<" "; } int main() {//使用以上功能的代碼就不給出了 }?
總結
以上是生活随笔為你收集整理的数据结构--线性表顺序存储(顺序表)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: png是什么格式
- 下一篇: linux mint是什么(SELinu