C -- 栈
什么是栈( stack )? 栈,也是一种链表系列的另一种数据结构。和队列恰恰相反。 队列 (Queue)First in first out,即先进先出,通俗点说就是只能从尾添加,从头开始删。 栈 (Stack)Last in first out, 即 后入先出 ,通俗点说就是从尾部添加(入栈),只能从尾部开始删除(出栈)。 其实之前学到过一个函数,好像是叫 atexit() ,参数是一系列函数指针,这个函数的执行就有点像栈的方式,后入列的先执行。(这个说法可能不是很准确) 设计实现一个 Stack ADT 此处再补充一下ADT的概念: ADT(Abstrac Data Type),抽象数据类型,指类型的属性和相关操作的抽象描述,这种描述不依赖于特定的实现和编程语言; 以下描述重要步骤,完整Stack.h以及实现Stack.c见文末。 第一步: 基本定义 typedef struct _item { /* unknown */ } Item ; /* 定义基本单元节点 */ typedef struct _node { Item item ; struct _node * next ; } Node ; /* 定义栈类型 */ typedef struct _stack { Node * head ; Node * tail ; int size ; } Stack ;