栈的链表实现 与 数组实现
来源:互联网 发布:淘宝店铺图片轮播 编辑:程序博客网 时间:2024/05/21 05:55
//链表实现
#include <stdlib.h>
#include <stdio.h>
#define FALSE 0
#define TRUE 1
#define OK 1
#define ERROR -1
typedef char dataType;
struct StackNode {
dataType data;
struct StackNode *link;
} ;
struct stacks {
struct StackNode *top;
};
typedef struct stacks LinkStack;
int initStack( LinkStack *s )
{
s->top = (struct StackNode *) malloc( sizeof(struct StackNode));
s->top->link = NULL;
return OK;
}
int stackEmpty( LinkStack *s )
{
return ( s->top->link == NULL );
}
int push( LinkStack *s, dataType node )
{
struct StackNode *newNode = NULL;
if( !( newNode = ( struct StackNode * ) malloc( sizeof( struct StackNode ))) )
return ERROR;
newNode->data = node;
newNode->link = s->top;
s->top = newNode;
return OK;
}
dataType pop( LinkStack *s )
{
if(stackEmpty( s ))
return ERROR;
struct StackNode *topNode = NULL;
topNode = s->top;
s->top = s->top->link;
char ch = topNode->data;
free( topNode );
return ch;
}
dataType getStackTop( LinkStack *s )
{
if( stackEmpty( s ) )
return ERROR;
return s->top->data;
}
int main()
{
LinkStack *s = ( LinkStack * ) malloc( sizeof( LinkStack ));
initStack( s );
push( s, 'm' );
push( s, 'e' );
push( s, 'j' );
push( s, 'h' );
push( s, 'a' );
push( s, 'n' );
printf("%c /n", getStackTop( s ));
while( !stackEmpty( s ) )
{
printf("%c /n", pop( s ));
}
return OK;
}
- 栈的链表实现 与 数组实现
- 栈的数组实现与链表实现
- 栈的实现(数组与链表实现)
- 队列的链表与数组实现
- 链表的实现与数组
- 队列的数组实现与链表实现
- 栈、队列、背包的数组与链表实现
- 栈—数组与链表实现
- java 队列与栈实现(链表与数组)
- 算法与数据结构 其二 数组和链表 的实现
- 数组索引实现栈的链表实现
- 栈的数组和链表实现
- 栈的数组和链表实现
- 约瑟夫环 数组与链表实现
- ⚔疯狂输出⚔ 数组实现与链表实现
- 栈的数组实现
- 栈的数组实现
- 栈的数组实现
- 在CentOS 5 Linux环境下配置TurboGears 2.1
- 女儿与数独(女儿24个月)
- 改变 CListCtrl、CHeaderCtrl 高度、字体、颜色和背景
- Spring2.5事务管理的三种简单方法
- C++ STL 容器技术 之 deque双端队列容器(很全面)
- 栈的链表实现 与 数组实现
- Silverlight 4 初试 - Hello World
- 经典文章收集
- void 指针 void*
- 设计模式之单例模式
- 三种类型的ARP病毒
- vs2008 编译和反编译
- vector容器使用例子
- arm 流水线和pc值