線性表的順序儲存又稱為順序表。它是用一組位址連續的儲存單元依次儲存線性表中的資料元素,從而使得邏輯上相鄰的兩個元素在物理位置上也相鄰。其最大的特點就是:元素的邏輯順序與其物理順序相同。
線性表的順序儲存結構中任一元素都可以隨機訪問,並且注意:線性表中元素的位序是從1 開始的,而陣列中元素的下標是從0 開始的。假定線性表的元素型別為 eletype ,則線性表的順序儲存型別可以描述為:
#define maxsize 50 //定義線性表的最大長度
typedef struct sqlist; //順序表的型別定義
1,結構定義:
#define initsize 10 //預設的最大長度
typedef structseqlist;
2,初始化順序表:
void initlist(seqlist &l)
3,增加動態陣列的長度:
void increasesize(seqlist &l,int len)sqlist; //順序表的型別定義
bool listinsert(sqlist &l,int i,int e)
插入操作的時間複雜度分析:
通過觀察以上**,我們分析時間複雜度時只需要關注最深層迴圈語句的執行次數與問題規模n 的關係。即語句「l.data[j]=l.data[j-1];」即可:
提示:如果以上的分析i 的值和迴圈次數n 的關係不是太清楚,要回想下開頭提到的線性表中元素的位序是從1 開始的,而陣列中元素的下標是從0 開始的。
刪除順序表l 中的第i (1<=i<=l.length)個位置的元素,用引用變數e 返回。若輸入的i 不合法,則返回false ;否則,將被刪元素賦給引用變數e ,並將第i+1 個元素及其後的所有元素一次往前移動乙個位置,返回true 。
下面給出部分**,輔助我們理解閱讀:
bool listdelete(sqlist &l,int i,int &e)seqlist; //順序表的型別的定義(動態分配方式)
elemtype getelem(seqlist l,int i)
由於順序表的各個元素在記憶體中連續存放,因此可以根據起始位址和資料元素大小立即找到第i 個元素,這也就是隨機訪問特性的體現。因此其時間複雜度可得為 o(1)。
在表l 中查詢具有給定關鍵字的元素。如下給出在順序表l 中查詢第乙個元素值等於e 的元素,並返回其位序:
int locateelem(seqlist l,elemtype e){
for(int i=0;i對於時間複雜度的分析:
通過觀察以上**,我們分析時間複雜度時只需要關注最深層迴圈語句的執行次數與問題規模n 的關係。即語句「 if(l.data[i]==e 」即可:
關於順序表的一些知識先就說這麼多,共勉!
你還不知道大資料?
背景 12月份有的同學參加了新工聯盟一級的測評考試,一級的內容主要是包括一些計算機基礎 大資料基本知識 資料操作和處理 資料分析方法和資料視覺化方法,今天就簡單分享其中一部分內容 持續更新 一 大資料定義 定義 對於 大資料 big data 研究機構gartner給出了這樣的定義。它是需要新處理模...
你可能不知道的東西
元素可以分為塊級元素,行內元素以及行內塊級元素。行內元素的margin或者padding只有margin left和margin right以及padding left和padding right有效果,margin top margin bottom padding top padding bot...
你可能不知道的const
眾所周知,使用 const 宣告的變數必須同時初始化為某個值。一經宣告,在其生命週期的任何時候都不能再重新賦予新值 const a syntaxerror 常量宣告時沒有初始化 const b 3 console.log b 3 b 4 typeerror 給常量賦值const 宣告只應用到頂級原語...