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...