1. 程式人生 > >C/C++:各種基本演算法實現小結(二)—— 堆 棧

C/C++:各種基本演算法實現小結(二)—— 堆 棧

各種基本演算法實現小結(二)—— 堆 棧

(均已測試通過)

==============================================================

棧——陣列實現

測試環境:Win - TC

[cpp] view plain copy  print?
  1. #include <stdio.h>
  2. char stack[512];  
  3. int top=0;  
  4. void push(char c)  
  5. {  
  6.     stack[top]=c;  
  7.     top++;  
  8. }  
  9. char pop()  
  10. {  
  11.     top--;  
  12.     return stack[top];  
  13. }  
  14. int is_empty()  
  15. {  
  16.     return 0==top;  
  17. }  
  18. void main()  
  19. {  
  20.     push('1');  
  21.     push('2');  
  22.     push('3');  
  23.     push('4');  
  24.     push('5');  
  25.     while(!is_empty())  
  26.         putchar(pop());  
  27.     putchar('/n');  
  28.     getch();  
  29. }  

執行結果:

====================================================

棧——陣列實現2

測試環境:Win - TC

[cpp] view plain copy  print?
  1. #include <stdio.h>
  2. #include <malloc.h>
  3. /* typedef int DataType; */
  4. #define DataType int
  5. #define MAX 1024
  6. typedefstruct
  7. {  
  8.     DataType data[MAX];  
  9.     int top;  
  10. }stack, *pstack;  
  11. pstack *init_stack()  
  12. {  
  13.     pstack ps;  
  14.     ps=(pstack)malloc(sizeof(stack));  
  15.     if(!ps)  
  16.     {  
  17.         printf("Error. fail malloc.../n");  
  18.         return NULL;  
  19.     }  
  20.     ps->top=-1;  
  21.     return ps;  
  22. }  
  23. int empty_stack(pstack ps)  
  24. {  
  25.     if(-1 == ps->top)  
  26.         return 1;  
  27.     else
  28.         return 0;  
  29. }  
  30. int push(pstack ps, DataType data)  
  31. {  
  32.     if(ps->top == MAX-1)  
  33.     {  
  34.         printf("Stack is full.../n");  
  35.         return 0;  
  36.     }  
  37.     ps->top++;  
  38.     ps->data[ps->top]=data;  
  39.     return 1;  
  40. }  
  41. int pop(pstack ps, DataType *data)  
  42. {  
  43.     if(empty_stack(ps))  
  44.     {  
  45.         printf("Stack is empty.../n");  
  46.         return 0;  
  47.     }  
  48.     *data=ps->data[ps->top];  
  49.     ps->top--;  
  50.     return 1;  
  51. }  
  52. DataType top_stack(pstack ps)  
  53. {  
  54.     if(empty_stack(ps))  
  55.     {  
  56.         printf("Stack is empty.../n");  
  57.         return 0;  
  58.     }  
  59.     return ps->data[ps->top];  
  60. }  
  61. void display(pstack ps)  
  62. {  
  63.     int i;  
  64.     if(empty_stack(ps))  
  65.     {  
  66.         printf("Stack is empty.../n");  
  67.         return;  
  68.     }  
  69.     printf("printf the items of stack.../n");  
  70.     for(i=ps->top;i>-1;i--)  
  71.         printf("%4d", ps->data[i]);  
  72.     printf("/n/n");  
  73. }  
  74. void main()  
  75. {  
  76.     int i, num, data, *pdata;  
  77.     pstack ps;  
  78.     ps=init_stack();  
  79.     printf("Enter stack num:");  
  80.     scanf("%d", &num);  
  81.     for(i=0;i<num;i++)  
  82.     {  
  83.         scanf("%d", &data);  
  84.         push(ps, data);  
  85.     }  
  86. 相關推薦

    C/C++各種基本演算法實現小結——

    各種基本演算法實現小結(二)—— 堆 棧 (均已測試通過) ============================================================== 棧——陣列實現 測試環境:Win - TC

    C/C++各種基本演算法實現小結—— 圖及其遍歷

    各種基本演算法實現小結(四)—— 圖及其遍歷 (均已測試通過) ==================================================================== 圖——深度優先和廣度優先演算法 無向圖

    C/C++各種基本演算法實現小結—— 查詢演算法

    各種基本演算法實現小結(六)—— 查詢演算法 (均已測試通過) =================================================================== 1、簡單查詢 在一組無序數列中,查詢特定某個數值,並返回其位置

    C/C++各種基本演算法實現小結—— 常用演算法

    各種基本演算法實現小結(七)—— 常用演算法 (均已測試通過) ====================================================================== 1、判斷素數 測試環境:VC 6.0

    C/C++各種基本演算法實現小結—— 樹與叉樹

    各種基本演算法實現小結(三)—— 樹與二叉樹 (均已測試通過) =================================================================== 二叉樹——先序 測試環境:VC 6.0 (C

    C/C++:各種基本演算法實現小結—— 單鏈表

    各種基本演算法實現小結(一)—— 單鏈表 (均已測試通過) ============================================================ 單鏈表(測試通過) 測試環境: Win-TC

    各種基本演算法實現小結—— 排序演算法

    分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

    C++ 靜態連結串列基本演算法實現

    C++ 靜態連結串列基本演算法實現 #ifndef StaticLinkList_h #define StaticLinkList_h const int MAXSIZE = 100; template <class T> struct StaticNode{ T data;

    C++優先順序隊列表基本演算法實現

    C++優先順序隊列表基本演算法實現 主要採用鏈式結構,進行資料儲存,然後定義一個最後結點指標陣列,將所有優先順序最後一個元素的地址儲存到這個指標陣列中。 #ifndef PriorityQueue_h #define PriorityQueue_h #include <iostream>

    各種基本演算法實現總結

    各種基本演算法實現小結(七)—— 常用演算法 (均已測試通過) ====================================================================== 1、判斷素數 測試環境:VC 6.0 (C)

    演算法精解C語言描述迴圈連結串列

    迴圈連結串列      顧名思義,首尾相連的連結串列即是迴圈連結串列。可以是單鏈表,也可以是雙鏈表。     迴圈連結串列是另一種形式的連結串列,它提供了更為靈活的遍歷連結串列元素的能力。迴圈連結串列可以是單向的或雙向的,但區分一個連結串列是

    各種基本算法實現小結—— 圖及其遍歷

    malloc end type details 幽默 can false 希望 頂點 分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net 各種基本算法實現

    C++繼承公有,私有,保護

    情況 pre mes 派生類 它的 保持 ++ col ble 公有繼承(public)、私有繼承(private)、保護繼承(protected)是常用的三種繼承方式。 1. 公有繼承(public) 公有繼承的特點是基類的公有成員和保護成員作為派生類的成員時,它們都保持

    C++實現反射

    找了一些資料,參考了 C++反射——開源中國 這篇,做了一些修改和簡化,成為了 Version3. 思路其實並不複雜,可以進行反推: 1. 反射是根據類名動態生成類,如果我們有一個全域性的對映關係,可以從類名得到類的相關資訊 ClassInfo,包括類的建構函式,那麼我們便能實現這

    Smobiler實現美觀登入介面——C# 或.NET Smobiler例項開發手機app

    目錄 一、 本文目標 二、 準備工作 1、 資料庫 2、 材料 三、 介面佈局 1、設定控制元件的屬性值 (1) 輸入框 (2) 圖片屬性 (3) HandElectricity的標題的label屬性 (4)登入按鈕 (5)版權申明  (

    C#中委託與事件的學習小結

    最近又學習了一些C#的小知識點,在此釋出部落格記錄一下。 一、委託 C#中的委託的關鍵字是delegate,我們可以使用委託型別來將已有的方法例項化出來,也可以將我們自己定義的方法作為引數來傳遞。 例如: private delegate string GetAStri

    C語言_位運算子的實現舉例

    1. 返回引數二進位制中 1 的個數。 比如: 15 0000 1111 4 個 1 程式碼如下: //返回引數二進位制中1的個數 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include

    C++中public、protected及private用法 以及各種繼承方式的影響

    在學習C++時經常會混淆public、protected、private在繼承中的概念,於是寫在此部落格加深理解。  首先記住以下三點: 使用者程式碼(類外)只能訪問public成員變數和public成員函式。 子類(繼承類)能訪問基類的public和protected

    Spring技術內幕Spring AOP的實現原理

    dede ide configure ida mini == src min dem 生成SingleTon代理對象在getSingleTonInstance方法中完畢,這種方法時ProxyFactoryBean生成AopProxy對象的入口。代理對象會

    Vue實現音樂播放器輪播圖組件

    item [] tin neo pic () client link ons 輪播圖組件 <template> <div class="slider" ref="slider"> <div class="slider-