只允許一端進行插入或刪除的線性表
棧頂,允許進行插入和刪除
棧底,固定不變
按照先進後出的原則
棧是線性表的特例,棧的順序儲存結構也叫順序棧
#define maxsize 50 //定義棧中元素的最大個數
typedef struct sqstack; //順序棧的簡寫
【注意】
1.top值不能超過maxsize
2.空為top== -1,滿棧為top==maxsize-1,棧的資料元素個數為top-1
1.判空
bool stackempty(sqstack s)
2.進棧bool push(sqstack &s ,elemtype x)
3.出棧bool pop(sqstack &s,elemtype &x)
4.讀取棧頂元素bool gettop(sqstack s,elemtype &x)
#define maxsize 100 //定義棧中元素的最大個數
typedef struct sqdoublestack; //順序共享棧的簡寫
1.進棧bool push(sqdoublestack &s ,elemtype x,int stacknum)
順序棧儲存空間大小需要事先開闢好,利用率不高
棧滿條件,top1和top2相差1,top1+1 == top2
棧的鏈式儲存結構也叫鏈棧
棧鏈一般不存在棧滿,判空為top==null
typedef struct snode snode,*slink //鏈棧的結點
typedef struct linkstacklinkstack //鏈棧
1.進棧bool push(linkstack *s, elemtype x)
2.出棧bool pop(linkstack *s, elemtype&x)
佇列是只允許在一端插入,在另一端進行刪除的線性表
隊頭,隊尾
按照先進先出的原則
陣列實現佇列,對首放在陣列下標為0的位置
#define maxsize 50
typedef structsqqueue;
首尾相連的順序儲存的佇列,解決假溢位現象
入隊
rear = (rear + 1)%maxsize;
出隊
front = (front +1 )%maxsize;
判空
1.設定標誌flag,當flag = 0 時,或者rear = font時為空,
當flag = 1且rear等於front時,為滿
2. front = rear為空,保留乙個空餘單位,認為佇列滿了
(rear+1)%maxsize == front
而元素個數
(rear- front +maxsize)%maxsize
1.入隊
bool enqueue(sqqueue &q,elemtype x)
2.出隊bool dequeue(sqqueue &q,elemtype &x)
線性表的單鏈表,只不過需要加點限制,只能表尾插入元素,表頭刪除元素。
為了方便操作,我們分別設定隊頭指標和隊尾指標,隊頭指標指向頭結點,隊尾指標指向尾結點。
typedef structlinknode;
typedef structlinkqueue;
1.入隊
只能從隊尾插入元素,隊頭刪除元素。於是入隊就是在隊尾指標進行插入結點操作。鏈隊的插入操作和單鏈表的插入操作是一致的。
void enqueue(linkqueue &q,elemtype x)
2.出隊
出隊就是頭結點的後繼結點出隊,然後將頭結點的後繼改為它後面的結點。
bool dequeue(linkqueue &q,elemtype &x)
允許兩端都可以入隊和出隊的佇列
(),{},.巢狀是任意的
演算法思想
若為左括號,入棧
若為右括號,出棧乙個左括號判斷是否匹配
檢查字元隊尾,檢查棧是否為空,只有空,字串才是括號匹配的
bool check(char *str )
斐波那契數列
0 1 1 2 3 5 8...
int fib (int n)
資料結構課程學習(2)
線性表是具有相同資料型別的n n 0 個資料元素的有限序列 表頭元素,表尾元素 除第乙個元素外,每個元素有且僅有乙個直接前驅 除最後乙個元素外,有且有乙個直接後驅 線性表的順序結構儲存是邏輯上相鄰,物理上相鄰 隨機儲存,時間複雜度為o 1 靜態建表 動態建表 起始位址 陣列名data 儲存容量 ma...
資料結構課程學習(4)
由二維陣列儲存矩陣 1.行有先 loc i,j loc 0,0 i h 1 j l 2.列有先 loc i,j loc 0,0 i h 1 j l 多個相同元素只分配乙個儲存空間,對零元素不分配儲存空間 對稱矩陣 n階方陣,a i,j a j,i i 1,j n 儲存到陣列b n n 1 2 中 儲...
資料結構課程總結
不知不覺,一學期就這樣過去,有遺憾也有收穫。當我懷揣著對新學科的憧憬,第一次上賀老師的課時,我發現資料結構不再是傳統的教學模式,而是採用翻轉課堂的方式,它是由賀老師推廣實施的,這是一次教學上的改革,我們很榮幸成為它的乙份子,追趕時代的新潮流。對於資料結構這門課來說,需要我們下很大的功夫在上面,它是基...