資料結構之線性表

2021-08-21 04:18:41 字數 2376 閱讀 4983



順序儲存和鏈式儲存

基礎:結構體,陣列,指標。

語言:c

序言:結構建立時候的typedef的作用!!!在c和c++不一樣

在c中,必須用typedef,宣告時就可以用 別名定義乙個變數;

而在c++中,有兩種方式,

方式一:不需要typedef即可定義,訪問直接用別名訪問資料,

方式二:用typedef定義,訪問必須先用別名定義變數,再訪問資料。

對 線性表的操作主要有,建立,求長,查詢,插入,刪除和顯示。

先說順序儲存,其實就是利用陣列來建立線性表,下面展示下順序表的六個操作。

#define maxlen 100

#define datatype int

//結構體的建立

typedef struct

seqlist;//名字

//順序表建立

seqlist *createlist()

//求長直接last+1就可以了

//查詢元素

int findlist(seqlist *lq,datatype i)//引入頭指標和被查元素

return -1;//沒有相匹配返回查詢失敗

} //插入元素

int insertlist(seqlist *lq,int i,datatype x)//引入頭指標,被插元素的位置和被插元素

lq->data[i]=x;//插入元素

lq->last++;//資料長度加1

return 1;//返回成功

} //刪除元素

int insertlist(seqlist *lq,int i)//引入頭指標,被刪元素的位置

lq->last--;//資料長度減1

return 1;//返回成功

} //顯示所有元素

void looklist(seqlist *lq)//引入頭指標,被刪元素的位置

}

線性表就是個陣列操作,刪除和插入操作部分利用迴圈進行資料覆蓋,優點是建立簡單,缺點是侷限性很大,必須先開墾一部分記憶體,不管用沒用的到,而且很容易溢位。再比較下乙個方法這些缺點就解決掉了。

相比線性表,線性鍊錶就顯得重要的多,這裡強調一下線性鍊錶的六個操作方法。

#include #include #define maxlen 100

#define datatype int

//結構體的建立

typedef struct link

seqlist,*seqlink;//名字

//線性鍊錶建立,這個方法意義不大,但是重要的是個思想

seqlist *createlist()

//求長

int lenlist(link *head)//引入頭指標

return i;//返回長度

}//查詢

seqlist *searchlist(seqlist *head,datatype x)//引入頭指標和被查詢元素

return null;//返回為空

} //刪除

seqlist *deletelist(seqlist *head,datatype x)//引入頭指標和被刪除元素

head=head->next;//遍歷下乙個

} return null;//返回為空

} //顯示

void looklist(seqlist *head)//引入頭指標

} int main(int argc, char *argv)

looklist(head);//檢視當前指標所有內容

//printf("%d\n",lenlist(head));//輸出當前長度

//printf("%d",searchlist(head,3)->data);//輸出被查詢元素的值

looklist(deletelist(head,3));//刪除後並可以檢視

return 0;

}

迴圈鍊錶:將線性的單向鍊錶最後乙個節點的指標域指向頭節點,整個鍊錶頭尾節點相連形成乙個環,就構成了單迴圈鍊錶。

雙向鍊錶:

//結構體的建立

typedef struct link

{ datatype data;//資料儲存

struct link *front;//指向前乙個結點

struct link *rear;//指向後乙個結點

在學習這個線性鍊錶時候,有個思想是不同於線性表的,就是線性鍊錶是從頭部進行操作的,其新增也是從頭部新增,這裡需要注意下(下劃線部分的操作,需要深刻理解)。

這些**都是跑過的,建議大家還是自己親手敲一遍加深印象,作者這裡也是一字一字敲出來的,要避免眼高手低。

mysql 線性表 資料結構之線性表

概要 參考 大話資料結構 把常用的基本資料結構梳理一下。線性表定義 線性表 list 零個或多個資料元素的有限序列。若將線性表記為 a 1,cdots,a a i,a cdots,a n 則表中 a 領先於 a i a i 領先於 a 稱 a 是 a i 的直接前驅元素,a 是 a i 的直接後繼元...

資料結構之線性表

從現在開始,我們開始討論如何實現一些常用的資料結構和其中的一些經典演算法.等把資料結構講完了.我可能會繼續討論vc 的程式設計只是以及vs平台下的c c 開發等等.呵呵.我們進入正題吧.我在這裡就只實現線性表的連表結構.當然了,這裡實際上包含了好多知識.我希望大家在引用的時候.一定要領悟裡面的一些變...

資料結構之線性表

線性表是具有相同特性的資料元素的乙個有限序列。該序列中所含元素的個數叫做線性表的長度,用n表示,n 0。當n 0時,表示線性表是乙個空表,即表中不包含任何元素。設序列中第i i表示位序 個元素為ai 1 i n 線性表的一般表示為 a1,a2,ai,ai 1,an include include d...