共享棧的C語言實現

共享棧:所謂共享棧就是為了節省空間,讓兩個棧共享一片連續的存儲空間,兩個棧從這片連續的共享空間的兩端向中間擴充自己的存儲空間,設這片存儲空間的大小為maxSize,采用棧頂指針始終指向當前棧頂元素的方式來實現共享棧,那么初始棧空時,兩個棧的棧頂指針的值分別為:top1==-1,top2==MaxSize

對共享棧進行入棧操作和出棧操作很簡單,關鍵在于要記住——“入棧判滿,出棧判空”?

共享棧的C語言實現

  1. 共享棧數據結構定義

    //假設棧的實現方式采用,棧頂指針始終指向當前的棧頂元素,也就是說判斷棧空的條件為top==-1
    typedef struct ShareStack {ElemType data[MaxSize];int top[2];                    //存儲兩個棧的棧頂指針
    }*shareStack,St;

    ?

  2. 對共享棧進行初始化操作
    //對共享棧進行初始化操作
    void Initiate(shareStack Sta)
    {memset(Sta->data, 0, sizeof(Sta->data));   //將共享棧的數據元素全部初始化為0(Sta->top)[0] = -1;(Sta->top)[1] = MaxSize;
    }
    

    ? ? ? ? ? ??

  3. 對共享棧進行入棧操作?

    
    //入棧操作
    void Push(shareStack Sta,ElemType x)
    {//top[0]表示第一個棧的棧頂指針,初始時top[0]=-1,top[1]表示第二個棧的棧頂指針,初始時top[1]=MaxSizeint stack;        //記錄當前需要對第幾個棧進行入棧操作printf("請輸入你要進行入棧操作的那個棧的序號,合法的輸入為0,1,分別表示第一個棧和第二個棧\n");scanf("%d", &stack);if (Sta->top[0] + 1 == Sta->top[1]){printf("棧滿,無法進行入棧操作\n");return;}switch (stack){case 0://對棧1進行入棧操作Sta->data[++(Sta->top[0])] = x;break;case 1://對棧2進行入棧操作Sta->data[--(Sta->top[1])] = x;}
    }
    

    ? ? ? ? ? ? ? ? ??

  4. 對共享棧進行出棧操作

    //出棧操作
    void Pop(shareStack Sta,ElemType &x)
    {int stack;           //用于記錄你所需要進行出棧操作的棧的序號printf("請輸入你要進行出棧操作的那個棧的序號,合法的輸入為0,1,分別表示第一個棧和第二個棧\n");scanf("%d", &stack);switch (stack){case 0:if (Sta->top[0] == -1){printf("棧空,無法進行出棧操作\n");return;}x = Sta->data[(Sta->top[0])--];break;case 1:if (Sta->top[1] == MaxSize){printf("棧空,無法進行出棧操作\n");return;}x = Sta->data[(Sta->top[1])++];}
    }

?用switch語句代替if-else分支語句使程序更簡潔

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

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

相關文章

簡單認識算法的復雜度

時間復雜度與空間復雜度 1.算法的復雜度 ? 算法在編寫成可執行程序后,運行時需要耗費時間資源和空間(內存)資源 。因此衡量一個算法的好壞,一般是從時間和空間兩個維度來衡量的,即時間復雜度和空間復雜度。 ? 時間復雜度主要衡量一個算法…

MYSQL02高級_目錄結構、默認數據庫、表文件、系統獨立表空間

文章目錄 ①. MySQL目錄結構②. 查看默認數據庫③. MYSQL5.7和8表文件③. 系統、獨立表空間 ①. MySQL目錄結構 ①. 如何查看關聯mysql目錄 [rootmysql8 ~]# find / -name mysql /var/lib/mysql /var/lib/mysql/mysql /etc/selinux/targeted/tmp/modules/100/mysql /etc/seli…

前端src中圖片img標簽資源的幾種寫法?

在 Vue 項目中引用圖片路徑有幾種不同的方法,具體取決于你的項目結構和配置。以下是幾種常見的方式: 1. 靜態資源目錄 (Public) 如果你的圖片放在了項目的 public 目錄下(例如,Vite 和 Create Vue App 腳手架工具通常使用這個目…

05 OpenCV圖像混合技術

文章目錄 理論算子示例 理論 其中 的取值范圍為0~1之間 算子 addWeighted CV_EXPORTS_W void addWeighted(InputArray src1, double alpha, InputArray src2, double beta,double gamma, OutputArray dst, int dtype -1 ); 參數1:輸入圖像Mat …

2024年【廣東省安全員A證第四批(主要負責人)】考試試卷及廣東省安全員A證第四批(主要負責人)作業模擬考試

題庫來源:安全生產模擬考試一點通公眾號小程序 廣東省安全員A證第四批(主要負責人)考試試卷根據新廣東省安全員A證第四批(主要負責人)考試大綱要求,安全生產模擬考試一點通將廣東省安全員A證第四批&#x…

釘釘機器人發送折線圖卡片 工具類代碼

釘釘機器人 “創建并投放卡片 接口 ” 可以 發送折線圖、柱狀圖 官方文檔:創建并投放卡片 - 釘釘開放平臺 0依賴、1模板、2機器人放到內部應用、3放開這個權限 、4工具類、5調用工具類 拼接入參 卡片模板 自己看文檔創建,卡片模板的id 有用 0、依賴…

Springboot項目中定時任務的四種實現方式

文章目錄 1. 使用Scheduled注解1.1 時間間隔執行1.2 固定時間點執行 2. 使用EnableScheduling注解啟用定時任務3. 實現SchedulingConfigurer接口4. 使用Quartz框架4.1 配置QuartzScheduler4.2 定義Job類和Trigger類 5. 總結 在開發現代應用時,定時任務是一個非常常見…

地圖可視化繪制 | R-ggplot2 NC地圖文件可視化

在推出兩期數據分享之后,獲取數據的小伙伴們也知道,數據格式都是NetCDF(nc) 格式網格數據,雖然我在推文分享中說明使用Python、R或者GIS類軟件都是可以進行 處理和可視化繪制的,但是,還是有小伙伴咨詢使用編程軟件Pyth…

牛客周賽 Round 34(A,B,C,D,E,F,G)

把這場忘了。。官方也遲遲不發題解 比賽鏈接 出題人題解 A 小紅的字符串生成 思路&#xff1a; 枚舉四種字符串打印出來即可&#xff0c;為了防止重復可以用set先去一下重。 code&#xff1a; #include <iostream> #include <cstdio> #include <cstring&g…

Opencv實戰(4)詳解輪廓

輪廓 Opencv實戰系列&#xff0c;前文&#xff1a; 文章目錄 輪廓(1).查找繪制1.findContours()2.drawContours() (2).層級結構(3).篩選輪廓(4).凸包 (1).查找繪制 預處理&#xff1a; 灰度化&#xff1a;使用cv::cvtColor()圖像去噪&#xff1a;使用高斯濾波cv::Gaussian(…

Acwing-基礎算法課筆記之數學知識(擴展歐幾里得算法)

Acwing-基礎算法課筆記之數學知識&#xff08;擴展歐幾里得算法&#xff09; 一、擴展歐幾里得算法1、裴蜀定理2、過程模擬3、代碼模板 二、線性同余方程1、定義2、模擬過程3、結論證明 一、擴展歐幾里得算法 1、裴蜀定理 對于任意正整數 a a a&#xff0c; b b b&#xff0…

day48 ● 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

一遍過。 當前房屋偷與不偷取決于 前一個房屋和前兩個房屋是否被偷了。所以這里就更感覺到&#xff0c;當前狀態和前面狀態會有一種依賴關系&#xff0c;那么這種依賴關系都是動規的遞推公式。 class Solution { public:int rob(vector<int>& nums) {vector<vec…

門店縱深不足、入口有遮擋影響客流準確率?近景客流幫你搞定!

為了優化運營策略、提升門店營收&#xff0c;很多店鋪和商場都會安裝客流攝像機。但是在實際應用中&#xff0c;由于門店縱深受限等原因&#xff0c;導致無法使用之前的常規客流產品。 針對這種情況&#xff0c;悠絡客最新研發了近景客流產品&#xff0c;即使存在入口被遮擋或門…

內網信息搜集

目錄 內網基礎知識 基本流程圖 怎么判斷是否在域內 常規信息類收集-應用&服務&權限等 cs信息搜集 bloodhound安裝及使用 內網基礎知識 工作組&#xff1a;將不同的計算機按照功能分別列入不同的組&#xff0c;想要訪問某個部門的資源&#xff0c;只要在【網絡】里…

pyqt教程

一、組件安裝配置 1.安裝組件 在Anaconda Prompt下進入自己的python環境 pip install PyQt5 pip install PyQt5-tools 2.vscode安裝插件 3.配置路徑 配置Pyuic:Cmd與Qtdesigner:Path路徑 1.Pyuic:Cmd路徑 一般是在你安裝的python環境下的 \Scripts\pyuic5.exe 2.Qtdesigner:P…

anaconda簡介以及安裝(Windows)

介紹 Anaconda是一個開源的Python發行版本&#xff0c;它是一個打包的集合&#xff0c;里面預裝了conda、Python、眾多packages、科學計算工具等。Anaconda的目的是方便使用Python進行數據科學研究&#xff0c;它涵蓋了數據科學領域常見的Python庫&#xff0c;并且自帶了專門用…

Python的循環結構練習

歸納編程學習的感悟&#xff0c; 記錄奮斗路上的點滴&#xff0c; 希望能幫到一樣刻苦的你&#xff01; 如有不足歡迎指正&#xff01; 共同學習交流&#xff01; &#x1f30e;歡迎各位→點贊 &#x1f44d; 收藏? 留言?&#x1f4dd; 生命對某些人來說是美麗的&#xff0c…

我國每年研究生的畢業數量統計分享

本數據集詳細記錄了自1949年至2021年我國每年研究生的畢業數量&#xff08;包括碩士和博士學位的畢業生&#xff09;。在2021年&#xff0c;我國的研究生畢業生人數達到了772,761人&#xff0c;此數字比上一年度增加了44,000人。 統計的數據單位使用的是人數。 數據展示&…

mysql,for循環執行sql

遇到一個問題&#xff0c;我需要模擬上百萬數據來優化sql&#xff0c;線上數據down不下來&#xff0c;測試庫又沒有&#xff0c;寫代碼執行要么慢要么就是sql語句太長。 于是&#xff0c;直接用mysql自帶的功能去實現&#xff01; 簡單而簡單 mysql可以for循環&#xff1f;沒…

Laravel框架: Call to a member function connect() on null 異常報錯處理

Laravel框架&#xff1a; Call to a member function connect() on null 異常報錯處理 Date: 2024.03.01 21:03:11 author: lijianzhan 原文鏈接: https://learnku.com/laravel/t/63721 問題&#xff1a; local.ERROR: Call to a member function connect() on null {"…