C/C++:各種基本演算法實現小結(二)—— 堆 棧
各種基本演算法實現小結(二)—— 堆 棧
(均已測試通過)
==============================================================
棧——陣列實現
測試環境:Win - TC
[cpp] view plain copy print?- #include <stdio.h>
- char stack[512];
- int top=0;
- void push(char c)
- {
- stack[top]=c;
- top++;
-
}
- char pop()
- {
- top--;
- return stack[top];
- }
- int is_empty()
- {
- return 0==top;
- }
- void main()
- {
- push('1');
- push('2');
- push('3');
- push('4');
- push('5');
- while(!is_empty())
- putchar(pop());
- putchar('/n');
-
getch();
- }
執行結果:
====================================================
棧——陣列實現2
測試環境:Win - TC
[cpp] view plain copy print?- #include <stdio.h>
- #include <malloc.h>
- /* typedef int DataType; */
- #define DataType int
- #define MAX 1024
- typedefstruct
- {
-
DataType data[MAX];
- int top;
- }stack, *pstack;
- pstack *init_stack()
- {
- pstack ps;
- ps=(pstack)malloc(sizeof(stack));
- if(!ps)
- {
- printf("Error. fail malloc.../n");
- return NULL;
- }
- ps->top=-1;
- return ps;
- }
- int empty_stack(pstack ps)
- {
- if(-1 == ps->top)
- return 1;
- else
- return 0;
- }
- int push(pstack ps, DataType data)
- {
- if(ps->top == MAX-1)
- {
- printf("Stack is full.../n");
- return 0;
- }
- ps->top++;
- ps->data[ps->top]=data;
- return 1;
- }
- int pop(pstack ps, DataType *data)
- {
- if(empty_stack(ps))
- {
- printf("Stack is empty.../n");
- return 0;
- }
- *data=ps->data[ps->top];
- ps->top--;
- return 1;
- }
- DataType top_stack(pstack ps)
- {
- if(empty_stack(ps))
- {
- printf("Stack is empty.../n");
- return 0;
- }
- return ps->data[ps->top];
- }
- void display(pstack ps)
- {
- int i;
- if(empty_stack(ps))
- {
- printf("Stack is empty.../n");
- return;
- }
- printf("printf the items of stack.../n");
- for(i=ps->top;i>-1;i--)
- printf("%4d", ps->data[i]);
- printf("/n/n");
- }
- void main()
- {
- int i, num, data, *pdata;
- pstack ps;
- ps=init_stack();
- printf("Enter stack num:");
- scanf("%d", &num);
- for(i=0;i<num;i++)
- {
- scanf("%d", &data);
- push(ps, data);
- }
-
相關推薦
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-