c語言資料結構學習心得 線性表

2022-09-03 09:57:09 字數 1606 閱讀 6543

線性表:具有相同資料型別的n(n>0)個資料元素的有限序列。

主要有順序儲存和鏈式儲存。

順序儲存:

特點:位址連續,隨機/訪問,順序儲存。

方式:靜態和動態。

優點:儲存密度大;隨機儲存:快速訪問表中任一位置元素。

缺點:插入刪除移動大量元素;對儲存空間要求高,會產生儲存空間的碎片。

1.插入

bool listinsert(sqlist &l,int

i,elemtype e)

最好的情況:表尾插入 只用加乙個資料,時間複雜度為o(1);

最壞的情況:表頭插入,所有元素後移一位,時間複雜度為o(n);

平均時間複雜度:o(n)。

2.刪除

bool listdelete(sqlist &l,int i,elemtype&e)

時間複雜度如插入,但是具體要分析。

線性表鏈式儲存

通過一組任意的儲存單元來儲存線性表中的資料元素。為了建立起資料元素之間的線性關係,對每個鍊錶結點,除了自身資訊,還存放了乙個指向其後繼的指標。

單鏈表:單個指標

typedef struct lnodelnode,*linklist;

通常用「頭指標」來標識乙個單鏈表,如linklist l,那麼頭指標l就代指乙個單鏈表。

單鏈表第乙個結點之前附加乙個結點,稱為「頭結點」。其資料域可不設任何資訊,也可記錄表長等資訊。頭結點指標域指向線性表第乙個元素結點。

頭結點:操作方便:第一元素前插入和刪除元素和第一結點操作與其他結點一致;鍊錶無論空或不空,操作也統一。

頭指標始終指向鍊錶的第乙個結點。

雙鏈表:雙指標

typedef struct dnodednode,*dlinklist;

插入:給插入的前乙個元素加輔助指標p,插入元素加輔助指標s

1.s->next=p->next;

2.p->next->prior=s;

3.s->prior=p;

4.p->next=s;;

刪除:刪除的前乙個元素加乙個輔助指標p,刪除的指標加乙個輔助指標q

1.p->next=q->next;

2.q->next->prior=p;

3.free(q);

迴圈單鏈表:

與單鏈表的區別在於,表中最後乙個結點的指標不是null,而是改為指向頭結點,從而整個鍊錶形成乙個環。

從任何乙個結點出發都能訪問到鍊錶的每乙個元素。

1.判斷條件:頭結點的後繼指標是否等於頭指標。

2.可對迴圈單鏈表不設頭指標而僅設尾指標,使效率更高。

迴圈雙鏈表:區別於雙鏈表是首尾結點構成環。

1.尾結點後繼指標指向表頭結點,頭結點的前驅指標指向尾結點。

2.當為空表時,頭結點的prior域和next域都等於l。

靜態鍊錶:

借助陣列來描述線性表的鏈式儲存結構,結點也有資料域data和指標域next,此指標是結點的相對位址(數值下標),又稱游標。

對插入與刪除操作與動態鍊錶(動態分配記憶體的方式)相同,只需修改指標,而不需移動元素。

c語言資料結構學習心得 棧

棧 stack 只允許在一端進行插入或刪除操作的線性表 棧頂 top 棧中允許進行插入和刪除操作的那一端 棧底 bottom 固定的,不允許進行插入或刪除的另一端 1.棧是受限的線性表,所以自然具有線性關係。2.棧中元素後進先出。棧的順序儲存 順序棧 define maxsize 50 定義棧中元素...

資料結構學習 線性表

線性表一般分為順序結構和鏈式結構。順序表裡面元素的位址是連續的,如陣列 鍊錶裡面節點的位址不是連續的,是通過指標連起來的,如單鏈表 順序結構 優點 易於查詢,索引快 list n 這樣的操作,o 1 複雜度。缺點 擴充套件性弱,不易刪除 插入,這兩項操作均是o n 的時間複雜度 鍊錶結構 優點 擴充...

資料結構學習 線性表

考試前複習下資料結構,把一些知識點整理在這!主要參考了殷人昆主編的 資料結構 用物件導向方法與c 語言描述 這本書,以及中山大學劉聰老師的課件內容!鍊錶雙鏈表 線性表 linear list 是由n n 0 個資料元素 結點 a 0 a 1 a 2 a n 1 組成的有限序列。維基百科 線性表是乙個...