資料結構 二 棧 佇列 遞迴

2021-09-22 16:40:13 字數 2101 閱讀 3874

1.用陣列實現乙個順序棧

//用陣列實現乙個順序棧

#define maxsize 64

//棧的最大容量

typedef

struct

sqstack,

*sqslink;

//順序棧說明符

//置棧空

void

clearstack

(sqslink s)

//判棧空

intemptystack

(sqslink s)

//元素x進棧

intpush

(sqslink s, datatype x)

}//出棧

datatype pop

(sqslink s)

}//取棧頂元素

datatype getstop

(sqslink s)

2.用鍊錶實現乙個鏈式棧

//用鍊錶實現乙個鏈式棧

typedef

struct node

snode,

*slink;

//置棧空

lclearstack

(slink top)

//判棧空否

intlemptysatck

(slink top)

//進棧

lpush

(slink top, datatype e)

//出棧

datatype lpop

(slink top)

}

3.程式設計模擬實現乙個瀏覽器的前進、後退功能

1.用陣列實現乙個順序佇列

//用陣列實現乙個順序佇列

typedef

struct

squeue,

*squlink;

2.用鍊錶實現乙個鏈式佇列

//用鍊錶實現乙個鏈式佇列

typedef

struct node //節點型別

qnode,

*qlink;

typedef

struct

//q節點結構

linkqueue;

//建立佇列

void

lcreatqueue

(linkqueue *q)

//判隊空

intlemptyqueue

(linkqueue *q)

//元素e進隊的演算法

void

lenqueue

(linkqueue *q, datatype e)

//出隊

datatype ldequeue

(linkqueue *q)

}

3.實現乙個迴圈佇列

//實現乙個迴圈佇列

//置隊空

void

clearqueue

(squlink q)

//判隊空

intemptyqueue

(sqlink q)

//元素e進隊

intenqueue

(squlink q, datatype e)

else

}//出隊

datatype dequeue

(squlink q)

}//求隊q中當前元素個數

intlenqueue

(squlink q)

1.程式設計實現斐波那契數列求值 f(n)=f(n-1)+f(n-2)

//程式設計實現斐波那契數列求值 f(n)=f(n-1)+f(n-2)

void

fibonacci

(int fib[n]

)int fib-i(

int i)

2.程式設計實現求階乘 n!

//程式設計實現求階乘 n!

intfact

(int n)

3.程式設計實現一組資料集合的全排列

資料結構(二) 棧棧與佇列

棧 stack 是限制插入和刪除只能在乙個位置上進行的表,該位置是表的末端,叫做棧頂 top 它是後進先出 lifo 的。對棧的基本操作只有push 進棧 和pop 出棧 兩種,前者相當於插入,後者相當於刪除最後的元素。實現 利用乙個單鏈表來實現棧的資料結構。而且,因為我們都只針對棧頂元素進行操作,...

資料結構筆記(二) 棧 佇列

一 棧 1 棧是一種後進先出,先進後出的資料結構。2 棧是一種操作受限的線性表,只允許在一端插入和刪除資料。3 棧主要包含2個操作,入棧和出棧 4 棧可以用陣列實現,也可以用鍊錶實現。用陣列實現的棧叫做順序棧,用鍊錶實現的棧叫做鏈式棧。例如 現在有乙個空瓶子。1 我們依次放入多個蘋果 2 從瓶子中取...

資料結構 棧 佇列

二 佇列 注 鏈式儲存 定義鍊錶元素所儲存的資料型別 以int為例 typedef int elemtype 定義棧的結點結構及結點指標型別 typedef struct stacknode stacknode,stacknodeptr 定義指向棧的結構 typedef struct linksta...