資料結構與演算法 第03部分 棧與佇列(棧)

2021-10-03 10:14:14 字數 818 閱讀 1244

1:棧定義

#define maxsize 100  //預先分配空間,這個數值根據實際需要預估確定;

typedef struct sqstack sqstack;

2:構造乙個空棧s

bool initstack(sqstack &s) //構造乙個空棧s

s.ptop = s.pbase; //ptop初始為pbase,空棧

return true;

}

3:插入元素ndata為新的棧頂元素

bool push(sqstack &s, int ndata) // 插入元素ndata為新的棧頂元素

*(s.ptop++) = ndata; //元素e壓入棧頂,然後棧頂指標加1,等價於*s.ptop=ndata; s.ptop++;

return true;

}

4:刪除s的棧頂元素,暫存在變數ndata中

bool pop(sqstack &s, int &ndata) //刪除s的棧頂元素,暫存在變數ndata中

ndata = *(--s.ptop); //棧頂指標減1,將棧頂元素賦給e

return true;

}

5:返回s的棧頂元素,棧頂指標不變

int gettop(sqstack s) //返回s的棧頂元素,棧頂指標不變

return *(s.ptop - 1); //返回棧頂元素的值,棧頂指標不變

}

資料結構與演算法 第03部分 棧與佇列(佇列)

1 佇列定義 define maxsize 100 typedef struct sqqueuesqqueue 2 迴圈佇列的初始化 迴圈佇列的初始化 bool initqueue sqqueue q 注意使用引用引數,否則出了函式,其改變無效 3 迴圈佇列的入隊 迴圈佇列的入隊 bool enqu...

資料結構與演算法 第11部分 排序

1 直接插入排序 演算法步驟 1 設待排度的記錄儲存在陣列r 1.n 中,可以把第乙個記錄r 1 看作乙個有序序列。2 依次將r i i 2,n 插入到已經排好序的序列r 1.i 1 中,並保持有序性。void straightinsertsort int r,int n 直接插入排序 r 0 r ...

c 資料結構佇列棧屍體 資料結構與演算法 棧與佇列

使用抽象資料型別可以幫助我們更好的理解資料所需的操作,之後再進行具體的資料型別實現。實際上,往往是操作影響著我們決定資料型別該如何實現,這裡有兩種典型的資料結構 棧和佇列。1 棧首先,普通的線性表實現是有兩個埠可以訪問的,但是如果作為棧就要封閉一端,只能訪問另一端。這當然不是自討苦吃,棧是一種抽象資...