數據結構-DAY05

一、棧的概念
1.棧是限定僅在表尾進行插入和刪除操作的線性表。先進后出、后進先出
????????棧頂:允許操作的一端
????????棧底:不允許操作的一端入棧,出棧。
????????棧分為:順序棧 鏈式棧
2.棧結構是在堆區創建的
3.優先級就是通過棧來解決的
先進后出,后進先出。

二、隊列的概念
1.隊列是只允許在一段進行插入,而在另一端進行刪除操作的線性表。
????????允許插入的稱謂隊尾,允許刪除的一端隊頭。
? ? ? ? 隊列分為:順序隊列,循環隊列,
????????常用操作:出隊、入隊。
????????先進先出,FIFO
2.滿隊:尾 + 1 = 頭
3.空隊:尾 = 頭
4.隊列又叫緩沖

三、練習與例題
1.創建棧

LinkStack *CreateLinkStack()
{LinkStack *ls = (LinkStack *)malloc(sizeof(LinkStack));if(NULL == ls){fprintf(stderr, "CreateLinkStack malloc");return NULL;}ls->top = NULL;ls->clen = 0; return ls;
}

2.入棧(頭插法)

int PushLinkStack(LinkStack *ls, DATATYPE *data) //入棧
{LinkStackNode *newnode = (LinkStackNode *)malloc(sizeof(LinkStackNode));if(NULL == ls){fprintf(stderr, "CreateLinkStack malloc");return 1;}int len = GetSizeLinkStack(ls);memcpy(&newnode->data, data, sizeof(DATATYPE));newnode->next = NULL;newnode->next = ls->top;ls->top = newnode;ls->clen++;return 0;
}

3.銷毀棧區

int DestoryLinkStack(LinkStack *ls)
{LinkStackNode *tmp = ls->top;while(tmp){ls->top = ls->top->next;free(tmp);tmp = ls->top;}free(ls);return 0;
}

4.獲取棧區的內容

DATATYPE *GetTopLinkStack(LinkStack *ls)
{if(IsEmptyLinkStack(ls)){return NULL;}return &ls->top->data;
}

5.出棧(頭刪)

int PopSeqStack(LinkStack *ls) // 頭刪
{if(IsEmptyLinkStack(ls)){return 1;}LinkStackNode *tmp = ls->top;ls->top = ls->top->next;free(tmp);ls->clen--;return 0;
}

6.主函數運行

int main(int argc, char *argv[])
{LinkStack *ls = CreateLinkStack();DATATYPE data[] = {{"maodan", 'F', 20, 80},  {"xiaofan", 'M', 21, 83},{"jett", 'F', 22, 83},   {"viper", 'M', 40, 90},{"runa", 'M', 41, 92}, {"gpw", 'F', 32, 63},};int i;for(i = 0; i < 6; ++i){PushLinkStack(ls, &data[i]);} int len = GetSizeLinkStack(ls);for(i = 0; i < len; ++i){DATATYPE *tmp = GetTopLinkStack(ls);printf("%s %c %d %d\n",tmp->name,tmp->sex,tmp->age,tmp->score);PopSeqStack(ls);}DestoryLinkStack(ls);ls = NULL;return 0;
}

7.隊列為空

int IsEmptySeqQue(SeqQueue *sq)
{ return sq->head == sq->tail; 
}

8.隊列為滿

int IsFullSeqQue(SeqQueue *sq) 
{ return (sq->tail + 1) % sq->tlen == sq->head; 
}

9.入隊

int EnterSeqQue(SeqQueue *sq, DATATYPE *data) 
{if (IsFullSeqQue(sq)) {fprintf(stderr, "EnterSeqQue full\n");return 1;}memcpy(&sq->array[sq->tail], data, sizeof(DATATYPE));sq->tail = (sq->tail + 1) % sq->tlen;return 0;
}

10.銷毀隊列

int DestroySeqQue(SeqQueue *sq) 
{free(sq->array);free(sq);return 0;
}

11.創建隊列

SeqQueue *CreateSeqQue(int len) 
{SeqQueue *sq = (SeqQueue *)malloc(sizeof(SeqQueue));if (NULL == sq) {fprintf(stderr, "CreateSeqQue malloc\n");return NULL;}sq->array = malloc(sizeof(DATATYPE) * len);if (NULL == sq->array) {fprintf(stderr, "CreateSeqQue malloc\n");return NULL;}sq->head = 0;sq->tail = 0;sq->tlen = len ;return sq;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81793.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81793.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81793.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode 153. Find Minimum in Rotated Sorted Array

題目描述 分析 可以發現一個規律&#xff1a; 假如整個數組最后一個元素是x。 最小值左側&#xff08;不含最小值自己&#xff09;的元素全部大于x。 最小值右側&#xff08;包含最小值自己&#xff0c;不包含x&#xff09;的元素全部小于x。 如果整個數組是有序的&#x…

如何在 AOSP 中判斷一個源文件屬于哪個模塊(以 CameraService 為例)

如何在 AOSP 中判斷一個源文件屬于哪個模塊&#xff08;以 CameraService 為例&#xff09; 在 AOSP 開發中&#xff0c;經常需要修改底層 C 代碼&#xff08;如 CameraService.cpp&#xff09;&#xff0c;但很多人會遇到一個問題&#xff1a; 我修改了某個 .cpp 文件&#x…

云原生主要架構模式

云原生(Cloud Native)是一種利用云計算的優勢來構建和運行可擴展、彈性和高效應用程序的方法。它不僅僅是技術的集合,更是一種架構和設計理念。本文將圍繞你提出的幾部分,深入探討云原生主要的架構模式,幫助你理解如何利用這些模式構建現代化的應用。 1. 服務化架構模式(…

深入理解MySQL結構與執行流程

標題&#xff1a;深入理解MySQL結構與執行流程 MySQL以其開源、靈活性和強大的功能成為了最受歡迎的關系型數據庫管理系統之一。無論是初創公司還是大型企業&#xff0c;都廣泛使用MySQL來存儲和管理數據。為了幫助大家更好地理解和優化MySQL的性能&#xff0c;本文將詳細講解…

Python web 開發 Flask HTTP 服務

Flask 是一個輕量級的 Web 應用框架&#xff0c;它基于 Python 編寫&#xff0c;特別適合構建簡單的 Web 應用和 RESTful API。Flask 的設計理念是提供盡可能少的約定和配置&#xff0c;從而讓開發者能夠靈活地構建自己的 Web 應用。 https://andi.cn/page/622189.html

BMVC2023 | 多樣化高層特征以提升對抗遷移性

Diversifying the High-level Features for better Adversarial Transferability 摘要-Abstract引言-Introduction相關工作-Related Work方法-Methodology實驗-Experiments結論-Conclusion 論文鏈接 GitHub鏈接 本文 “Diversifying the High-level Features for better Adve…

虛幻引擎5-Unreal Engine筆記之攝像頭camera

虛幻引擎5-Unreal Engine筆記之攝像頭camera code review! 目錄 第一部分&#xff1a;攝像頭的基礎概念 1.1 UE5 中攝像頭的定義與作用1.2 UE5 中攝像頭的類型與分類 第二部分&#xff1a;攝像頭的代碼結構與分類 2.1 攝像頭是類還是組件&#xff1f;2.2 組件的本質&#xff…

【大數據】MapReduce 編程-- PageRank--網頁排名算法,用于衡量網頁“重要性”-排序網頁

PageRank 是 Google 創始人拉里佩奇&#xff08;Larry Page&#xff09;和謝爾蓋布林&#xff08;Sergey Brin&#xff09;在 1998 年提出的一種網頁排名算法&#xff0c;用于衡量網頁“重要性”的一種方式。它是搜索引擎中用于排序網頁的一種基礎算法 一個網頁越是被其他重要…

React Flow 數據持久化:Django 后端存儲與加載的最佳實踐(含詳細代碼解析)

在構建 React Flow 應用時&#xff0c;前端呈現的節點與連線構成的可視化流程只是冰山一角&#xff0c;其背后的數據持久化與靈活調取才是確保應用穩定運行、支持用戶數據回溯與協作的關鍵。因此&#xff0c;后端存儲與加載 React Flow 信息的環節&#xff0c;就如同整個應用的…

深度學習中的歸一化:提升模型性能的關鍵因素

&#x1f4cc; 友情提示&#xff1a; 本文內容由銀河易創AI&#xff08;https://ai.eaigx.com&#xff09;創作平臺的gpt-4-turbo模型輔助完成&#xff0c;旨在提供技術參考與靈感啟發。文中觀點或代碼示例需結合實際情況驗證&#xff0c;建議讀者通過官方文檔或實踐進一步確認…

Pandas:Series和DataFrame的概念、常用屬性和方法

本文目錄&#xff1a; 一、Series和Dataframe的概念二、創建Series對象三、創建Dataframe對象&#xff08;一&#xff09;Series1.Series的常用屬性總結如下&#xff1a;2.Series的常用方法總結如下&#xff1a; &#xff08;二&#xff09;Dataframe1.Dataframe的常用屬性2.Da…

數據中心Overlay解決方案

文檔圍繞數據中心 Overlay 解決方案展開,指出數據中心向大集中、虛擬化、云業務演進,傳統架構存在網絡規劃復雜、彈性不足、業務擴展受限等問題。Overlay 網絡在物理網絡上構建虛擬網絡,實現名址分離、網絡與物理解耦,支持業務靈活部署。方案采用VXLAN 技術(如 SDN 控制模…

SpringBoot 項目實現操作日志的記錄(使用 AOP 注解模式)

本文是博主在做關于如何記錄用戶操作日志時做的記錄&#xff0c;常見的項目中難免存在一些需要記錄重要日志的部分&#xff0c;例如權限和角色設定&#xff0c;重要數據的操作等部分。 博主使用 Spring 中的 AOP 功能&#xff0c;結合注解的方式&#xff0c;對用戶操作過的一些…

以太聯 - Intellinet 閃耀臺北 SecuTech 國際安全科技應用博覽會

2025 年 5 月 7 日至 9 日&#xff0c;臺北 SecuTech 國際安全科技應用博覽會現場熱鬧非凡&#xff0c;以太聯 - Intellinet 攜旗下前沿產品與解決方案精彩亮相&#xff0c;成為展會上一道亮麗的風景線&#xff0c;吸引了眾多業內人士的目光&#xff0c;收獲了廣泛關注與高度認…

【華為鴻蒙電腦】首款鴻蒙電腦發布:MateBook Fold 非凡大師 MateBook Pro,擎云星河計劃啟動

文章目錄 前言一、HUAWEI MateBook Fold 非凡大師&#xff08;一&#xff09;非凡設計&#xff08;二&#xff09;非凡顯示&#xff08;三&#xff09;非凡科技&#xff08;四&#xff09;非凡系統&#xff08;五&#xff09;非凡體驗 二、HUAWEI MateBook Pro三、預熱&#xf…

OSA快速上手

我第一次接觸OSA&#xff0c;第一感覺就是龐雜&#xff0c;相關的文檔和資料基本都是英文&#xff0c;運行下示例場景&#xff0c;效果和效率確實很香。本文僅針對初次接觸OSA、望而卻步的朋友們進行快速運用的引導。 首先&#xff0c;找個安裝包&#xff0c;導入項目后&#…

RK3568下編譯解決未定義符號而報錯終止鏈接

現象&#xff1a;我從rk3568板子上導出來了一個 libsqlite3.so 然后編譯連接就會報這樣的錯誤 解決辦法有多種&#xff0c;以前我遇到這種情況&#xff0c;我都是使用sqlite3源碼從新編譯一份使用&#xff0c;并替換到板子上。 現在我是用另一種方法&#xff1a;增加編譯參數 …

LSTM-Attention混合模型:美債危機與黃金對沖效率研究

摘要&#xff1a;本文依托多維度量化分析框架&#xff0c;結合自然語言處理&#xff08;NLP&#xff09;技術對地緣文本的情緒挖掘&#xff0c;構建包含宏觀因子、風險溢價因子及技術面因子的三階定價模型&#xff0c;對當前黃金市場的波動特征進行歸因分析。實證結果顯示&…

Spring Boot 多參數統一加解密方案詳解:從原理到實戰

Spring Boot 多參數統一加解密方案詳解:從原理到實戰 一、前言:為什么需要參數加解密? 在現代Web開發中,數據安全傳輸是基本要求。特別是涉及敏感數據(如用戶隱私、支付信息等)時,僅靠HTTPS還不夠,我們需要對關鍵參數進行二次加密。本文將詳細介紹Spring Boot中實現多…

【css】【面試提問】css經典問題總結

第一章 CSS基礎相關提問 1.1 選擇器問題 1.1.1 選擇器優先級疑問 1. 優先級規則 內聯樣式&#xff1a;直接寫在 HTML 標簽的 style 屬性中的樣式&#xff0c;優先級最高。例如&#xff1a; <p style"color: red;">這是一段紅色文字</p>這里文字的顏…