日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

链式存储mysql_链栈:栈的链式存储结构

發布時間:2023/12/1 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 链式存储mysql_链栈:栈的链式存储结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前面講完了棧的順序存儲結構,我們現在來看看棧的鏈式存儲結構,簡稱為鏈棧。

鏈棧是沒有附加頭結點的運算受限的單鏈表。棧頂指針就是鏈表的頭指針。

棧是用棧頂來做插入和刪除操作,那么對于鏈棧的棧頂放在鏈表的頭部還是尾部呢?

單鏈表有頭指針,而棧頂指針也是必須的,那干嗎不讓它倆合二為一呢,所以比較好的辦法是把棧頂放在單鏈表的頭部。另外,都已經有了棧頂在頭部了,單鏈表中比較常用的頭結點也就失去了意義,通常對于鏈找來說,是不需要頭結點的。

所以鏈棧的結構是這樣的:

對于鏈棧來說,基本不存在棧滿的情況,除非內存已經沒有可以使用的空間,如果真的發生,那此時的計算機操作系統已經面臨死機崩潰的情況,而不是這個鏈棧是否溢出的問題。

但對于空棧來說,鏈表原定義是頭指針指向空,那么鏈棧的空其實就是 top=NULL 的時候。

鏈棧的結構

對于棧來說,結構體定義需要定義兩部分。一個是 top 指針,一個是存儲數據。那么鏈棧又應該如何設計結構體呢?

與順序棧有點區別,我們先看看以前單鏈表的結構體吧。

單鏈表的結構體定義:

typedef struct Node

{

ElemType data;

struct Node *next;

}Node;

typedef struct Node *LinkList; /* 定義LinkList */

鏈棧其實也是個鏈表,所以可以參考它的實現,棧的結點定義為:

/* 鏈棧結構 */

typedef struct StackNode

{

SElemType data;

struct StackNode *next;

} StackNode,*LinkStackPtr;

以上是鏈棧的一個結點定義,但是我們還需要加入一個棧頂指針,所以完整的定義為:

typedef int Status;

/* SElemType類型根據實際情況而定,這里假設為int */

typedef int SElemType;

/* 鏈棧結構 */

typedef struct StackNode

{

SElemType data;

struct StackNode *next;

} StackNode,*LinkStackPtr;

typedef struct

{

LinkStackPtr top;

int count;

} LinkStack;

這里怎么多聲明了一個變量 count?用來干什么的嗎?

記錄棧中元素個數,也可以將元素個數屬性放在LinkStack類型中定義。

結構體定義完畢之后,后面就可以通過編程來熟悉鏈棧的操作了。

延伸閱讀

此文章所在專題列表如下:

總結

以上是生活随笔為你收集整理的链式存储mysql_链栈:栈的链式存储结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。