C++ 練習:用指標實現棧
使用C++的指標實現一個簡單版的棧
stack.h
#ifndef stack_hpp #define stack_hpp #include <stdio.h> class Stack { public: Stack(); ~Stack(); bool Push(int value); int Pop(); private: unsigned int m_elem_size; unsigned int m_logic_length; unsigned int m_alloc_length; int* m_elems; }; #endif /* stack_hpp */
stack.cpp
#include "stack.hpp" #include <stdlib.h> #include <assert.h> Stack::Stack() { m_elem_size = sizeof(int); m_logic_length = 0; m_alloc_length = 4; m_elems = (int*)malloc(m_alloc_length * sizeof(m_elem_size)); } Stack::~Stack() { free(m_elems); } bool Stack::Push(int value) { //如果棧已滿,根據翻倍策略擴大記憶體 if(m_logic_length == m_alloc_length) { m_alloc_length = m_alloc_length * 2; m_elems = (int*)realloc(m_elems, m_alloc_length * m_elem_size); assert(m_elems != NULL); } m_elems[m_logic_length] = value; m_logic_length ++; return true; } int Stack::Pop() { assert(m_logic_length > 0); m_logic_length --; return m_elems[m_logic_length]; }
main.cpp
#include "stack.hpp" #include <iostream> int main(int argc, const char * argv[]) { Stack stack; stack.Push(1); stack.Push(2); stack.Push(3); stack.Push(4); stack.Push(5); int val = stack.Pop(); std::cout << "val" << val << std::endl; return 0; }
相關推薦
C++ 練習:用指標實現棧
使用C++的指標實現一個簡單版的棧 stack.h #ifndef stack_hpp #define stack_hpp #include <stdio.h> class St
python列表練習-用python實現棧和佇列
1.棧的工作原理:先進後出 入棧 出棧 棧頂元素 棧的長度 棧是否為空 stack = [] info = """ 棧操作 1.入棧 2.出棧 3.棧頂元素 4.棧的長度 5.棧是否為空 """ while True:
【C/C++】用指標實現二維陣列的傳遞、使用的4種示例,及各種變形。
請看例程。 #include <stdio.h> #include <stdlib.h> /* *func1:用int a[]傳遞二維陣列 *func2:用int a[][10]傳遞二維陣列 *func3:用int *a[10]傳遞二維 *
C#練習——用方法實現兩個數的最大值
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T
C語言用指標實現兩個陣列值互換
C語言用指標實現兩陣列的值互換 #include <stdio.h> #define N 10 void ReadData(int a[], int n); void PrintDa
C語言用棧頂和棧底指標實現棧的操作及用棧實現數值轉換
棧是一種先進先出(FIFO)的資料結構。。廢話不多說,直接貼程式碼程式碼參考了小甲魚的資料機構課程#include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include <math.
LeetCode225 棧·用佇列實現棧(C++)
題目描述: 使用佇列實現棧的下列操作: push(x) -- 元素 x 入棧 pop() -- 移除棧頂元素 top() -- 獲取棧頂元素 empty() -- 返回棧是否為空 注意: 你只能使用佇列的基本操作-- 也就是 push to back,
LeetCode255用佇列實現棧c++
使用佇列實現棧的下列操作: push(x) -- 元素 x 入棧 pop() -- 移除棧頂元素 top() -- 獲取棧頂元素 empty() -- 返回棧是否為空 注意: 你只能使用佇列的基本操作-- 也就是 push to back,&n
C#LeetCode刷題之#225-用佇列實現棧(Implement Stack using Queues)
問題 使用佇列實現棧的下列操作: push(x) -- 元素 x 入棧 pop() -- 移除棧頂元素 top() -- 獲取棧頂元素 empty() -- 返回棧是否為空 注意: 你只能使用佇列的基本操作-- 也就是 push to back, peek/pop f
C++分別用指標和引用實現交換函式
前幾天上課老師給出了一個課堂作業:請分別用指標和引用來實現兩個數的交換。雖然題目比較俗套,但是好久沒寫過C++程式了,依然很生疏,所以我決定總結一下自己的實現,程式粗糙,風格也混合著C,希望大家給提提建議。 老師出這個題目的目的無非是想讓我們聯絡
練習 5-3 用指標實現函式strcat(s,t)將t指向的字串複製到s指向的字串的尾部。
1. 首先想到就是的將字串s迴圈到‘\0’的前一個字元,然後將字串t的地址給此時的s地址。 兩個問題: ①這種s=t,是不對的,只是拷貝了指標,並沒有進行字串的複製? ②當執行語句 while(*s++);時,此時 *s='\0', 所以後面應該s--;或者這樣寫 wh
C#調用AForge實現攝像頭錄像
需要 version com targe supported .cn strong odin logs 1: 首先下載庫文件>> 也可以去官網尋找>> 下載本教程全代碼>> 輸出為MP4需要用到ffmpeg相關的文件,我打包的庫已經帶了,
用Javascript實現棧結構
github主頁:https://github.com/A15162252289 什麼是棧? 棧是一種遵從後進先出(LIFO)原則的有序集合。新新增的或待刪除的元素都儲存在棧的同一端,稱之為棧頂,另一端則為棧底。在棧裡,新元素靠近棧頂,舊元素靠近棧底。 如何實現棧? 1.首
棧的建立------用陣列實現棧
設計: 1、該陣列儲存物件型別在例項化是才確定-----泛型 2、陣列的索引0是棧底 3、建立一個正整數變數top ----是棧頂元素否後的索引號 4、建立一個棧的介面----定義如下函式: 程式碼實現: 介面類:StackADT public
【LeetCode 簡單題】59-用佇列實現棧
宣告: 今天是第59道題。給定一個整數陣列,判斷是否存在重複元素。以下所有程式碼經過樓主驗證都能在LeetCode上執行成功,程式碼也是借鑑別人的,在文末會附上參考的部落格連結,如果侵犯了博主的相關權益,請聯絡我刪除 (手動比心ღ( ´・ᴗ・` )) 正文 題目:使用佇列實現棧的下列
佇列&棧//用佇列實現棧
使用佇列實現棧的下列操作: push(x) -- 元素 x 入棧 pop() -- 移除棧頂元素 top() -- 獲取棧頂元素 empty() -- 返回棧是否為空 注意: 你只能使用佇列的基本操作-- 也就是 push to back,&n
Leetcode225 用佇列實現棧
【方法一】 用一個輔助佇列,每當有元素push進“棧”,則需要把佇列的front位置給它空出來,方便後面直接pop()和top(),因此我們可以做兩次搬家操作,來獲得一個新的佇列: class MyStack { private: queue<int> q; qu
Python用列表實現棧,佇列(二)
用列表實現佇列 佇列和棧實現的功能差不多,無非是入佇列,出佇列,佇列長度等等。其中,入佇列可以用列表的append()來實現,出佇列可以使用pop(0)來實現。由於這個實現方法比較簡單,因此它也是最低效的。append方法入佇列和棧實
Python用列表實現棧,佇列(一)
用列表實現棧 棧方法 列表實現 S.push() L.append() S.pop() L.pop() S.top()
【LeetCode題解】225_用佇列實現棧(Implement-Stack-using-Queues)
目錄 描述 解法一:雙佇列,入快出慢 思路 入棧(push) 出棧(pop) 檢視棧頂元素(peek) 是否為空(empty) Java 實現 Python 實現 解法二:雙佇列,入慢出