06從一個例項看資料抽象與封裝
用C的方式實現棧
struct Link
{
int data;
struct Link* next;
};
struct Stack
{
int size;
struct Link* head;
};
void StackInit(struct Stack* stack);
void StackPush(struct Stack* stack, int data);
int StackPop(struct Stack* stack, int* data); //返回型別為pop是否成功
int StackEmpty(struct Stack* stack);
void StackCleanup(struct Stack* stack);
用C++資料抽象的方式實現棧
- 資料封裝,能保護內部資料不遭受外部破壞
- 使得函式和資料成員更加緊密
class Stack
{
private:
int size_;
Link* head_;
struct Link
{
int data_;
Link* next_;
Link(int data, Link* next) : data_(data), next_(next);
}
public:
Stack():head_(NULL), size_(0)
{}
~Stack()
{
Link* tmp;
while(head_)
{
tmp = head_;
head_ = head_->next_;
delete tmp;
}
}
void Push(const int data)
{
Link* tmp = new Link(data, head_);
head_ = tmp;
++size_;
}
bool Empty()
{
return (size_ == 0);
}
bool Pop(int& data)
{
if(Empty())
{
return false;
}
Link* tmp = head_;
data = head_->data_;
head_ = head_->next_;
delete tmp;
--size_;
return true;
}
};
相關文章
- 抽象結合例項 Employee抽象
- oracle資料庫與oracle例項Oracle資料庫
- Dart - 抽象類的例項化Dart抽象
- 資料庫正規化與例項資料庫
- Memcached安裝與使用例項
- 封裝動態庫dll與靜態庫lib(原理及簡單例項)封裝單例
- 19C 單例項資料庫安裝單例資料庫
- SQLAlchemy Join Query 得到的不同資料行相同資料是同一個例項SQL
- 方法返回資料統一封裝封裝
- Oracle 11G資料庫單例項安裝Oracle資料庫單例
- echarts常用功能封裝|抽象為mixinEcharts封裝抽象
- 多個資料庫是否可以共有一個Oracle 11g RAC例項KG資料庫Oracle
- frida 建立一個ArrayList例項
- 06: 抽象工廠模式抽象模式
- java 的 四 個 基 本 特 性 ——封裝 繼承 多型 抽象Java封裝繼承多型抽象
- oracle 11g 單例項資料庫的安裝Oracle單例資料庫
- 用promise封裝一個ajaxPromise封裝
- 使用ts封裝一個ajax封裝
- 封裝一個通用的PopupWindow封裝
- 一個例項告訴你資料指標體系的搭建要點指標
- 封裝type方法例項封裝
- 電腦科學中抽象的好處與問題—偽共享例項分析抽象
- vue3官網介紹,安裝,建立一個vue例項Vue
- 一步步封裝完善一個資料驅動型-表單模型封裝模型
- axios 請求資料封裝iOS封裝
- 有了這個新特性,一掃例項儲存資料丟失風險!
- mongodb關閉資料庫例項MongoDB資料庫
- 資料流圖繪製例項
- Angular 如何根據一個 class 的定義和資料,動態建立一個該類的例項Angular
- 一個簡單的 Amqp 封裝MQ封裝
- 封裝了一個? URL地址解析封裝
- 封裝一個自己的js庫封裝JS
- 【學習】體系結構-001-例項與資料庫資料庫
- 一個馬爾科夫鏈例項馬爾科夫
- 3.1.4 準備啟動一個例項
- 一個pyspark 開發練習例項Spark
- 分享一個SQLite 效能優化例項SQLite優化
- 多例項資料庫一個用PSU資料庫