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

2021-10-03 10:14:14 字數 893 閱讀 4598

1:佇列定義

#define maxsize 100

typedef struct sqqueuesqqueue;

2:迴圈佇列的初始化

//迴圈佇列的初始化

bool initqueue(sqqueue &q)//注意使用引用引數,否則出了函式,其改變無效

3:迴圈佇列的入隊

//迴圈佇列的入隊

bool enqueue(sqqueue &q,int ndata)//將元素ndata放入q的隊尾

q.pbase[q.nrear] = ndata; //新元素插入隊尾

q.nrear = (q.nrear + 1) % maxsize; //隊尾指標加1

return true;

}

4:迴圈佇列的出隊

//迴圈佇列的出隊

bool dequeue(sqqueue &q, int &ndata) //刪除q的隊頭元素,用ndata返回其值

ndata = q.pbase[q.nfront]; //儲存隊頭元素

q.nfront = (q.nfront + 1) % maxsize; //隊頭指標加1

return true;

}

5:取迴圈佇列的隊頭元素

int gethead(sqqueue q)//返回q的隊頭元素,不修改隊頭指標

return q.pbase[q.nfront];

}

6:迴圈佇列的長度

int queuelength(sqqueue q)

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

1 棧定義 define maxsize 100 預先分配空間,這個數值根據實際需要預估確定 typedef struct sqstack sqstack 2 構造乙個空棧s bool initstack sqstack s 構造乙個空棧s s.ptop s.pbase ptop初始為pbase,空...

資料結構與演算法 第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 棧首先,普通的線性表實現是有兩個埠可以訪問的,但是如果作為棧就要封閉一端,只能訪問另一端。這當然不是自討苦吃,棧是一種抽象資...