/*
Name: stack.c
Copyright: personal
Author: hojor
Date: 07-06-10 10:22
Description: stack
*/
#include <stdio.h>
#include <stdlib.h>
#include "stack.h"
#define EmptyTOS (-1)
#define MinStackSize (5)
#define ElementType int
struct StackRecord
{
int Capacity;
int TopOfStack;
ElementType * Array;
};
typedef struct StackRecord * Stack;
//function.list
int IsEmpty(Stack S);
int IsFull(Stack S);
void DisposeStack(Stack S);
void MakeEmpty(Stack S);
void Push(ElementType X,Stack S);
void Pop(Stack S);
ElementType Top(Stack S);
ElementType TopAndPop(Stack S);
Stack CreateStack(int MaxElements);
//create stack size of MaxElements
Stack CreateStack( int MaxElements)
{
Stack S;
if(MaxElements < MinStackSize)
printf("Stack size is too small\n");
S = (Stack)malloc(sizeof(struct StackRecord));
if(S == NULL)
printf("Out of space!!\n");
S->Array = (ElementType *)malloc(sizeof(ElementType)*MaxElements);
if(S->Array == NULL)
printf("Out of space!!\n");
S->Capacity = MaxElements;
MakeEmpty(S);
return S;
}
//release Stack routines
void DisposeStack(Stack S)
{
if(S != NULL)
{
free(S->Array);
free(S);
}
}
//Determine whether the stack is empty
int IsEmpty(Stack S)
{
return S->TopOfStack == EmptyTOS;
}
//Determine whether the stack is full
int IsFull(Stack S)
{
return S->TopOfStack == S->Capacity;
}
//create an empty stack routines
void MakeEmpty(Stack S)
{
S->TopOfStack = EmptyTOS;
}
//push stack
void Push(ElementType x,Stack S)
{
if(IsFull(S))
printf("Full stack\n");
else
S->Array[++S->TopOfStack]=x;
}
//return top of stack
ElementType Top(Stack S)
{
if(!IsEmpty(S))
return S->Array[S->TopOfStack];
printf("Empty stack");
return 0;
}
//pop stack
void Pop(Stack S)
{
if(IsEmpty(S))
printf("\nEmpty stack\n");
else
S->TopOfStack--;
}
//gave the top of stack and pop
ElementType TopAndPop(Stack S)
{
if(!IsEmpty(S))
return S->Array[S->TopOfStack--];
printf("\nEmpty stack\n");
return 0;
}
int main(void)
{
int i;
Stack s = CreateStack(10);
for(i=0;i<10;i++)
Push(i,s);
for(i=0;i<10;i++)
printf("%d ",TopAndPop(s));
DisposeStack(s);
system("pause");
return 0;
}
分享到:
相关推荐
数据结构 严蔚敏 栈 stack
用java实现的栈Stack类,不继承任何集合类,用对象数组实现
基于C语言的数据结构-栈stack
基于python的数据结构代码实现-栈Stack
UDP 协议栈 IP。V1.3 - ARP timeout and ability to reset the ARP IP/MAC cache Migration notes: v1.2 to v1.3 - UDP_complete_nomac and IP_Complete_nomac have generics to specify clock rate and ARP time...
stack栈,如何使用栈,如何学好栈就下载此文档,很全的,谢谢啦,数据结构与算法!!!
stack.h为栈的实现,testStack.c为stack的用法
1. 数据结构栈 2. 代码调用栈 3. 内存区域栈
本文实例讲述了JS栈stack类的实现与使用方法。分享给大家供大家参考,具体如下: 栈是一种“先进后出”的数据结构,原理如下图所示: 示例代码: /*使用栈stack类的实现*/ function stack() { this.dataStore = ...
thread_info 结构被称为迷你进程描述符,是因为在这个结构中并没有 直接包含与进程相关的字段,而是通过 task 字段指向具体某个进程描 述符。...一个进程的内核栈和 thread_info 结构之间的逻辑关系如下图所示:
如果你写了一个一直调用自身的死循环,那么恭喜你,很快就可以看到报错:Uncaught RangeError: Maximum call stack size exceeded。那么这个call stack size有多少呢? 1. 计算方法 如下的方法可以为你计算出你使用...
1、掌握顺序栈的类型定义方法。 2、掌握在顺序栈上实现的六种基本算法。 2、掌握顺序栈的简单应用。 二、 实验内容 1、实现一个栈数据结构。 2、利用栈实现中缀表达式与前缀表达式的转换。 三、相关内容介绍 ...
栈的实现,Stack栈使用符号进出 静态栈,与链表栈的实例
一个线程打印123,另一个打印456,最终结果是打印123 456 123 45
蓝牙协议栈(Bluetooth stack),蓝牙初学者
答案
应用.NET类库中的栈类Stack完成十进制转换成二进制、八进制、十六进制。要求应用 Windows窗体程序设计实现,界面美观,功能完善。
zigbee ,z_stack 协议栈详细 教程 资料。一步一步教你。