C.Interface.And.Implementations—stack的实现
来源:互联网 发布:seo软文推广 编辑:程序博客网 时间:2024/05/08 10:45
由于之前一直写C++代码,感觉对指针都很多底层理解不是很深入,于是开始阅读《C.Interface.And.Implementations》这本书籍,这本书经别人推荐说不错,于是从头到尾好好研究一下。
第一章主要阐述了堆栈的接口以及实现。底层使用单链表进行支撑。
=======================stack.h=====================================
#ifndef STACK_INCLUDED#define STACK_INCLUDED#define T Stack_Ttypedef struct T *T;extern T Stack_new(void);extern int Stack_empty(T stk);extern void Stack_push(T stk, void* x);extern void *Stack_pop(T stk);extern void Stack_free(T *stk);#undef T#endif
=======================stack.c======================================
#include <stddef.h>#include <assert.h>#include "mem.h"#include "stack.h"#define T Stack_Tstruct T { int count; struct elem{ void* x; struct elem* link; }* head;};T Stack_new(){ T stk; NEW(stk); stk->count = 0; stk->link = NULL; return stk;}int Stack_empty(T stk){ assert(stk); return stk->count == 0;}void Stack_push(T stk, void *x){ struct elem *t; assert(stk); NEW(t); t->x = x; t->link = stk->head; stk->head = t; stk->count++;}void *Stack_pop(T stk){ void *x; struct elem *t; assert(stk); assert(stk->count > 0); t = stk->head; x = t->x; stk->head = t->link; stk->count--; FREE(t); return x;}void Stack_free(T *stk){ struct elem *t , *u; assert(stk && *stk); for(t = (*stk)->head; t; t = u){ u = t->link; FREE(t); } FREE(*stk);}
0 0
- C.Interface.And.Implementations—stack的实现
- C.Interface.And.Implementations—Atom的实现
- C.Interface.And.Implementations—exception的实现
- C.Interface.And.Implementations—memory(简单版本)的实现
- C.Interface.And.Implementations—memory(复杂版本)的实现
- C.Interface.And.Implementations—memory(arena版)的实现
- C.Interface.And.Implementations—list(单链表)的实现
- C.Interface.And.Implementations—set的实现
- C.Interface.And.Implementations—dynamic arrays的实现
- C.Interface.And.Implementations—sequence的实现
- C.Interface.And.Implementations—ring的实现
- C.Interface.And.Implementations—bit vector的实现
- C.Interface.And.Implementations—table(key-value系统)的实现
- 显示实现和隐式实现接口的区别(Implicit and Explicit Interface Implementations)
- 20.4 Interface implementations
- Specifying Object Implementations 指定对象的实现
- C Interfaces and Implementations 关于setjmp,longjmp和volatile
- C#: Interface, Abstract and Virtual 的区别
- POSITION用法解释
- ASP.NET MVC Filters 4种默认过滤器的使用【附示例】
- hibernate mysql 编码设置
- 史上最权威收入标准v2014
- 了解实际开发中 Hashtable 的特性原理
- C.Interface.And.Implementations—stack的实现
- XCode下的iOS单元测试
- HTML5 2D游戏引擎研发系列 第一章
- [Leetcode] Jump Game (Java)
- vi/vim键盘图-----又一张桌面背景好图
- ASP.Net MVC3 图片上传详解(form.js,bootstrap)
- 【Apache Avro】quick start快速开始,示例教程
- 《编程珠玑》之位运算知识
- JS格式化日期