用链表实现通用堆栈
2011-06-30 16:53
190 查看
用链表实现通用堆栈http://blog.csdn.net/douzixinxin/archive/2006/02/24/608035.aspx
#include <assert.h>
#include <stdlib.h>
typedef struct Stack//定义结构体
{
int num;
struct Stack *next;
}Stack;
/*尾节点:链表堆栈中最后一个入栈的节点*/
static Stack *stack;//指向尾节点的指针
int isempty()//判断是否链式堆栈是否为空
{
return stack == NULL;
}
int isfull()//该情况不存在
{
return 0;
}
void push(Stack *newStack)//结构体入栈,加入链表尾节点
{
Stack *temp = (Stack *)malloc(sizeof(Stack));
assert( !isfull() );//链表堆栈是否满
assert( temp != NULL );//新节点空间分配是否失败
temp->num = newStack->num;//新节点初始化
temp->next = stack;//新节点指向旧的尾节点
stack = temp;//链表堆栈指针指向尾节点
}
void pop()//删除尾节点
{
Stack *temp;
assert( !isempty() );//链表堆栈是否空
temp = stack;//保存旧的尾节点
stack = temp->next;//链表堆栈指针指向次尾节点
free(temp);//释放旧的尾节点。注意:一定要释放,否则容易引起内存泄露
}
Stack f_top()//返回尾节点,但并不删除
{
assert( !isempty() );//链表堆栈是否为空
return *stack;//返回尾节点,但并不删除
}
void del_stack()//删除整个链表堆栈,释放内存空间
{
while( !isempty() )
pop();
}
#include <assert.h>
#include <stdlib.h>
typedef struct Stack//定义结构体
{
int num;
struct Stack *next;
}Stack;
/*尾节点:链表堆栈中最后一个入栈的节点*/
static Stack *stack;//指向尾节点的指针
int isempty()//判断是否链式堆栈是否为空
{
return stack == NULL;
}
int isfull()//该情况不存在
{
return 0;
}
void push(Stack *newStack)//结构体入栈,加入链表尾节点
{
Stack *temp = (Stack *)malloc(sizeof(Stack));
assert( !isfull() );//链表堆栈是否满
assert( temp != NULL );//新节点空间分配是否失败
temp->num = newStack->num;//新节点初始化
temp->next = stack;//新节点指向旧的尾节点
stack = temp;//链表堆栈指针指向尾节点
}
void pop()//删除尾节点
{
Stack *temp;
assert( !isempty() );//链表堆栈是否空
temp = stack;//保存旧的尾节点
stack = temp->next;//链表堆栈指针指向次尾节点
free(temp);//释放旧的尾节点。注意:一定要释放,否则容易引起内存泄露
}
Stack f_top()//返回尾节点,但并不删除
{
assert( !isempty() );//链表堆栈是否为空
return *stack;//返回尾节点,但并不删除
}
void del_stack()//删除整个链表堆栈,释放内存空间
{
while( !isempty() )
pop();
}
相关文章推荐
- 用链表实现堆栈
- 2.redis学习笔记:redis List底层数据实现(通用双端链表)
- 单向链表实现堆栈
- 通用链表,队列的实现
- emWIN中实现了通用的链表结构
- C语言实现通用链表初步(一)
- 递归,迭代,堆栈三种方式实现单链表反转(C++)
- 堆栈的单链表实现
- 基于数组或链表的堆栈实现
- 《Java数据结构与算法》笔记-CH5-链表-4用链表实现堆栈
- 单向链表实现堆栈
- C语言实现通用链表初步(三)----单元测试
- 4.3 堆栈的链表实现
- 链表实现堆栈
- 数据结构之双端(通用)链表的实现
- c语言实现通用数据结构(一):通用链表
- C语言通用数据类型链表的实现,(数据域为指针,可指向任意类型数据)
- C++ 多态 虚函数 通用链表用c++多态实现(不用模板)
- C实现通用数据结构--单链表
- C实现通用数据结构--双向链表