C和C 寫棧的區別

2021-07-02 01:27:03 字數 1462 閱讀 8633

棧的初始化:

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 自動分...