《大话数据结构》读后总结(九)
生活随笔
收集整理的這篇文章主要介紹了
《大话数据结构》读后总结(九)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
線性表
順序存儲結(jié)構(gòu)的插入與刪除
獲得元素操作
#define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 typedef int Status; /* Status是函數(shù)的類型,其值是函數(shù)結(jié)果狀態(tài)代碼,如OK等 */ /* 初始條件:順序線性表L已存在,1≤i≤ListLength(L) */ /* 操作結(jié)果:用e返回L中第i個數(shù)據(jù)元素的值 */ Status GetElem(SqList L, int i, ElemType *e) {if (L.length == 0 || i < 1 || i > L.length)return ERROR;*e = L.data[i - 1];return OK; } 復(fù)制代碼插入操作
/* 初始條件:順序線性表L已存在,1≤i≤ListLength(L), */ /* 操作結(jié)果:在L中第i個位置之前插入新的數(shù)據(jù)元素e,L的長度加1 */ Status ListInsert(SqList *L, int i, ElemType e) {int k;/* 順序線性表已經(jīng)滿 */if (L->length == MAXSIZE) return ERROR;/* 當(dāng)i不在范圍內(nèi)時 */if (i < 1 || i >L->length + 1) return ERROR;/* 若插入數(shù)據(jù)位置不在表尾 */if (i <= L->length) {/*將要插入位置后數(shù)據(jù)元素向后移動一位 */for (k = L->length - 1; k >= i - 1; k--) L->data[k + 1] = L->data[k];}/* 將新元素插入 */L->data[i - 1] = e; L->length++;return OK; } 復(fù)制代碼刪除操作
/* 初始條件:順序線性表L已存在,1≤i≤ListLength(L) */ /* 操作結(jié)果:刪除L的第i個數(shù)據(jù)元素,并用e返回其值,L的長度減1 */ Status ListDelete(SqList *L, int i, ElemType *e) {int k;/* 線性表為空 */if (L->length == 0) return ERROR;/* 刪除位置不正確 */if (i < 1 || i > L->length) return ERROR;*e = L->data[i - 1];/* 如果刪除不是最后位置 */if (i < L->length) {/* 將刪除位置后繼元素前移 */for (k = i; k < L->length; k++) L->data[k - 1] = L->data[k];}L->length--;return OK; } 復(fù)制代碼線性表的順序存儲結(jié)構(gòu),在存、讀數(shù)據(jù)時,不管是哪個位置,時間復(fù)雜度都是O(1);而插入或刪除時,時間復(fù)雜度都是O(n)。
線性表順序存儲結(jié)構(gòu)的優(yōu)缺點(diǎn)
歡迎掃描下方二維碼,持續(xù)關(guān)注:
互聯(lián)網(wǎng)工程師(id:phpstcn),我們一起學(xué)習(xí),一起進(jìn)步
轉(zhuǎn)載于:https://juejin.im/post/5ca5d0e351882544097e23e8
總結(jié)
以上是生活随笔為你收集整理的《大话数据结构》读后总结(九)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: powerdesigner 导出mysq
- 下一篇: 前端学习(3102):vue+eleme