栈(stack)C语言链表实现&&数组实现
来源:互联网 发布:我国网络发展现状 编辑:程序博客网 时间:2024/05/03 20:32
//链表实现#ifndef _Stack_hstruct Node;typedef struct Node *PtrToNode;typedef PtrToNode Stack;int IsEmpty(Stack s);Stack CreateStack();void DisposeStack(Stack s);void MakeEmpty(Stack s);void Push(int x,Stack s);int Top(Stack s);void Pop(Stack s);#endif //head is dummystruct Node{int n;PtrToNode Next;};int IsEmpty(Stack s){return s->next == NULL;}Stack CreateStack(){Stack s;s = (Stack)malloc(sizeof(struct Node));if(s == NULL){printf("Out of Space!\n");return 1;}s->n = 0;s->next = NULL;return s;}void DisposeStack(Stack s){Stack p;while(s!=NULL){p = s-> next;free(s);s = p;}}void MakeEmpty(Stack s){if(s == NULL){printf("Must create stack first!\n");return 1;}while(!IsEmpty(s)){Pop(s);}}void Push(int x,Stack s){Stack p;p = (Stack)malloc(sizeof(struct Node));if(p == NULL){printf("Out of Space!\n");return 1;}p->n = x;p->next = s—>next;s->next = p;}void Pop(Stack s){Stack p;if(IsEmpty(s)){printf("Error:stack is empty!\n");return 1;}p = s->next;s->next = p->next;free(p);}int Top(Stack s){if(!IsEmpty(s))return s->next->n; printf("Stack is empty!\n"); return 1;}
//数组实现
#ifndef _Stack_hstruct StackRecord;typedef struct StackRecord *Stack;int IsEmpty(Stack s);int IsFull(Stack s);Stack CreateStack(int MaxElements);void DisposeStack(Stack s);void MakeEmpty(Stack s);void Push(int x,Stack s);int Top(Stack s);void Pop(Stack s);int TopAndPop(Stack s);#endif //head is dummy#define EmptyTOS -1#define MinStackSize 5struct StackRecord{int capacity;int topofstack;int *a;}int IsEmpty(Stack s){return s->topofstack == EmptyTOS;}int IsFull(Stack s){return s->topofstack == MaxElements -1;}Stack CreateStack(int MaxElements){Stack s;if(MaxElements<MinStackSize){printf("Stack size is too small\n");return 0;}s = (Stack)malloc(sizeof(stuct StackRecord));if(s == NULL){printf("Out of Space!\n");return 0;}s->a = (int *)malloc(sizeof(int)*MaxElements);if(s->a == NULL){printf("Out of Space\n");return 0;}s->capacity = MaxElements;MakeEmpty(s);return s;}void DisposeStack(Stack s){if(s!= NULL){free(s->a);free(s);}}void MakeEmpty(Stack s){s->topofstack = EmptyTOS;}void Push(int x,Stack s){if(IsFull(s))printf("Stack is Full\n");s->a[++s->topofstack] = x;}int Top(Stack s){if(!IsEmpty(s))return s->[s->topofstack];printf("Stack is Empty\n");return 0;}void Pop(Stack s){if(IsEmpty(s))printf("Stack is Empty\n");else s->topofstack--;}int TopAndPop(Stack s){if(!IsEmpty(s))return s->a[topofstack--];printf("Stack is Empty\n");return 0;}
0 0
- 栈(stack)C语言链表实现&&数组实现
- 栈(Stack)的C语言实现
- 栈(Stack) C 语言实现
- c语言 ---- Stack实现
- C语言,简单栈的实现 Stack
- 动态栈Stack的C语言实现
- c语言栈Stack简单实现
- C语言实现stack模板
- C语言Stack简单实现
- 栈的C语言实现(链表和数组)
- C语言实现栈(数组)
- 栈的C语言实现(数组)
- 使用数组实现栈(C语言)
- 栈数组实现实现文件C语言
- 栈 stack 用数组实现
- 数组C语言实现
- [数据结构]Stack(数组)实现
- 【转】C语言实现stack模板
- HTML5的history API,保存ajax数据
- html中关于li横向显示的css写法
- Struts1防止页面重复提交解决方案
- Spring整合Jms学习(四)_事务管理
- 在敏捷环境中用wiki高效地组织测试用例
- 栈(stack)C语言链表实现&&数组实现
- 奇迹Mu分析 - NPC相关操作
- 编写高性能JavaScript
- Ubuntu12.04下的nginx+php+mysql环境配置
- 程序员什么时候该考虑辞职
- android 调用系统命令实现关机
- c++简单的ATL COM开发和调用实例
- Oracle 静态监听注册详解
- 用核心-路径法设计页面