棧的初始化:
c++是被放在建構函式中實現;
棧的釋放;
c++是被放在析構函式中實現;
函式的呼叫:
c++不用再傳遞棧的位址;
棧的實現:
c++的類的實現可以避免名稱衝突,也可以將類放在名字空間裡面(namespace);
c++實現棧,可以將資料封裝、能夠保護內部的資料結構不遭受外界破壞;
c++實現棧操作:
#include
using namespace std;
class stack
}; public:
stack():head_(0),size_(0) //null 定義成0
~stack()
} void push(const int data)
bool empty()
bool pop(int &data)
link *tmp=head_;
data=head_->data_;
head_=head_->next_;
delete tmp;
--size_;
return true; }
private:
link *head_;
int size_; };
int main(void)
//while(!stackempty(&stack))
while(!stack.empty())
//printf("\n");
cout << endl;
return 0; }
c實現棧操作:
#include
#include
#include
struct link ;
struct stack ;
void stackinit(struct stack *stack)
void stackpush(struct stack *stack,const int data)
int stackempty(struct stack *stack)
int stackpop(struct stack *stack,int *data)
struct link *tmp=stack->head;
*data=stack->head->data;
stack->head=stack->head->next;
free(tmp);
--stack->size;
return 1; }
void stackcleanup(struct stack *stack)
stack->size=0; }
int main(void)
while(!stackempty(&stack))
printf("\n");
return 0; }
c 棧和java棧的區別
首先兩種不同語言的棧在操作方法的名字上有一些不同 首先看一下原c 棧的方法的基本用法 push 向棧內壓入乙個成員 pop 從棧頂彈出乙個成員 但不返回該棧頂值 empty 如果棧為空返回true,否則返回false top 返回棧頂,但不刪除成員 size 返回棧內元素的大小 stackst 方法...
c 棧和堆的區別
在c 中,記憶體分成5個區,他們分別是堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區。棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。堆,就是那些由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般乙個n...
C 堆和棧的區別
堆和棧的區分 堆 heap 棧 stack 1 記憶體分配方面 堆 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中的堆是兩回事,分配方式是類似於鍊錶。可能用到的關鍵字如下 new malloc delete free等等。棧 由編譯器 compiler 自動分...