資料結構 線性結構和棧

2021-10-24 21:15:41 字數 1568 閱讀 2207

一種結構化資料集合

也就是有一種關係的資料

非線性結構有樹和圖

線性結構就比較多了,線性表,棧與佇列,字串,陣列

線性表就像火車一樣,表頭沒有前驅,表頭就是第乙個,表尾沒有後繼,表尾就是最後乙個,其他元素只有乙個前驅後繼

線性表用指標來實現實參和位址的操作

typedef

struct #定義結構體

book;

typedef

struct

sqlist;

發現書上寫順序表的寫法大同小異,說實話我也不懂,就是照著書上一頓擼**

首先說下結構體型別的寫法

typedef struct structname; #structname也就是結構體名,這裡可以自己定義

思路初始化就是進行構造乙個空的順序表

先分配空間,使elem指向這段空間的基位址

講標的長度設為0

這裡不寫了吧,說實話,寫了也記不住,記作思路最重要
說實話寫到這裡我就覺得資料結構真的好難呀

思路

function (sqlist l , elemtype e)

return0;

}

思路

乙個順序表中插入乙個值,肯定會造成從插入這個值的地方後面元素都要往後移對不對,這樣改變了表的結構,就要引用表了

怎麼做呢

第一步都是要對插入的值的地方進行判斷,i的位置要在1到length+1才是合理的

從表尾n到插入位置i的元素往後移,一共有(n-i+1)個元素要移動

上**

status  listinsert

(sqlist &l ,

int i ,elemtype e)

}

寫到這裡,我感覺寫任何乙個方法都是大致一樣的套路

先對輸入的條件進行判斷,是否越界還是輸入的數值型別錯位啥的。

然後再下手第二步就是進行判斷這個方法到底使什麼發生了變化,看變化前的和變化後的狀態

寫到這裡,我寫不下去了,想起來為什麼我在寫資料結構,因為我在求職過程中有筆試題,20道然後就是怎麼說呢,給你乙個小時讓你回答,然後有很多資料結構的題,然後就想複習一下資料結構
中間略過很多寫**的部分,直接從每種資料結構特點入手吧

首先棧是線性結構,可以將它理解為堆盤子,怎麼說呢,後進先出,放在上面的盤子先拿對吧,這樣更符合常理對吧,你要從下面先拿也沒毛病,只是有點小事化大的意思。

兩種,入棧和出棧完了,說起來簡單吧

棧有兩個指標

top指向棧頂

base指向棧底

base是不動的,top是隨著入棧出棧而指向最上面的,也就是top是動的

## 入棧
思路

判斷棧是否滿了

滿了就返回,沒滿就進行進棧操作

沒滿進棧,top+1

status push

(sqstack &s ,selemtype e)

資料結構 線性結構 棧

棧 和佇列相反的作用,越是先存入的資料就得越到後才能取出,根據這個特性可以用陣列或鍊錶模擬出棧。陣列模擬棧 新增資料正常順序,每天加乙個數棧頂加一次,彈棧的時候將棧頂指標的數彈出即可,遍歷棧陣列時是從棧頂開始迴圈。1 class arraystack9 判斷棧是否已滿 10public boolea...

python資料結構 2 線性資料結構 棧

2.棧的應用 總結在這個系列的第一篇部落格中,我主要強調了程式設計思維的重要性以及如何高效準確的編寫出能解決問題的 這一篇部落格開始就正式開始python資料結構相關的知識。有一種資料結構,它的元素順序取決於新增的順序或者刪除的順序,一旦某個元素被新增進來,它與前後元素的相對位置也就保持不變了,這樣...

資料結構 線性結構和非線性結構

資料結構包括 線性結構和非線性結構 線性結構 線性結構作為最常用的資料結構,其特點是資料元素之間存在一對一的線性關係 線性結構有兩種不同的儲存結構,即順序儲存結構和鏈式儲存結構.順序儲存的線性表稱為順序表,順序表中的儲存元素是連續的 鏈式儲存的線性表稱為鍊錶,鍊錶中儲存元素不一定是連續的,元素節點中...