线性表顺序存储的一些操作(初始化,添加,删除)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                线性表顺序存储的一些操作(初始化,添加,删除)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                最近有時間學一些自己想學的,就找來看看數(shù)據(jù)結(jié)構(gòu)。看的是大話數(shù)據(jù)結(jié)構(gòu)。之前學數(shù)據(jù)結(jié)構(gòu)是大一時候,現(xiàn)在看這個還可以,沒那時候?qū)W的累。但是還是需要進行一些總結(jié),以免自己會忘記。
 雖然大部分和書上差不多,但是不自己動手敲,還是會有問題。或者有些地方自己這樣寫會好理解一些。
一.線性表順序存儲
線性表的順序存儲結(jié)構(gòu),指的是用一段地址連續(xù)的存儲單元依次存儲線性表的數(shù)據(jù)元素。接下來我們對線性表結(jié)構(gòu)進行了解
#define MAXSIZE 200 typedef struct{Elemtype data[MAXSIZE];int length; }Sqlist;這里的長度指的是線性表長度,是線性表中數(shù)據(jù)元素的個數(shù)。我們對線性表進行操作,這個量是變化的。
 其實線性表的順序存儲就是數(shù)組,但是這個長度是變化的,可以這么理解。
二.一些操作
1.初始化線性表
Sqlist *InitList(int n,int t) {Sqlist *L;L = (Sqlist *)malloc(sizeof(Sqlist));L->length = n;for(int i = 0; i < n; i++)L->data[i] = t*i;return L; }這里的t是隨便給的值,n是長度。
2.獲得元素
Status GetElem(Sqlist *L,int i,Elemtype *e) {if(i < 1 || i > L->length)return ERROR;if(L->length == 0)return ERROR;*e = L->data[i-1];return OK; }這里主要是記得要判斷分界條件,不然有時候沒輸出會覺得很奇怪。
3.增加元素
Status InsertElem(Sqlist *L,int i,Elemtype e) {int k;if(i < 1 || i > L->length)return ERROR;if(L->length ==0)return ERROR;for(k = L->length - 1;k >= i -1;k--)L->data[k+1] = L->data[k];L->length++;L->data[i-1] = e;return OK; }這里需要注意的是,從最后一個元素進行遍歷,不然從前開始,中間的數(shù)都會被覆蓋掉。還有別忘了改線性表長度。
4.刪除元素
Status DeleteElem(Sqlist *L,int i,Elemtype *e) {int k;if(i < 1 || i > L->length)return ERROR;if(L->length ==0)return ERROR;*e = L->data[i-1];for(k = i;k<L->length;k++)L->data[k-1] = L->data[k];L->length--;return OK; }這里和上面類似,不是很難理解。
 下面是總體代碼:
三.線性表的優(yōu)缺點
 第一次用markdown,不是很適應(yīng),就用截圖了。
總結(jié)
以上是生活随笔為你收集整理的线性表顺序存储的一些操作(初始化,添加,删除)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 普通最小二乘法( Ordinary L
 - 下一篇: JavaSE基础(4) JAVA_HOM