数据结构 学习笔记之:顺序栈的C语言实现

来源:互联网 发布:郑州java培训排名 编辑:程序博客网 时间:2024/04/27 08:06
//////////////////////////////////////////////////////////////////////////////////
更多原创“uC/OS-II学习笔记之:系列”基础及嵌入式相关知识详解,请访问可乐虎博客:
http://blog.csdn.net/dcx1205
相信不会让您失望!!//////////////////////////////////////////////////////////////////////////////////
//写篇顺序栈,与大家共勉!//不足错误之处,望指教!#include <stdio.h>#include <math.h>#include <stdlib.h> #define TRUE  1#define FALSE 0#define STACK_SIZE 5typedef int ElementType; //定义结构体typedef struct SeqStack {    ElementType array[STACK_SIZE];    ElementType top;}SEQSTACK; //初始化顺序栈bool InitStack(SEQSTACK *pS){    if (!pS)//内存分配失败    {        return FALSE;    }    pS->top = -1;        return TRUE;}//判断是否为空bool IsEmpty(SEQSTACK *pS){    if (pS->top < 0)    {        return TRUE;    }    else     {        return FALSE;    }}//判断是否为满bool IsFull(SEQSTACK *pS){    if (pS->top == STACK_SIZE-1)    {        return TRUE;    }    else    {        return FALSE;    }}//压栈(入栈)bool PushStack(SEQSTACK *pS, ElementType element){    if (IsFull(pS))    {        return FALSE;    }    pS->top++;    pS->array[pS->top] = element;        return TRUE;}//出栈ElementType PopStack(SEQSTACK *pS){    ElementType element;    if (IsEmpty(pS))    {        return FALSE;    }    element = pS->array[pS->top];    pS->top--;    printf("element=%d\n", element);    return element;}//获取栈顶元素ElementType GetTop(SEQSTACK *pS){    ElementType element;        if (IsEmpty(pS))    {        return FALSE;    }    element = pS->array[pS->top];    printf("element=%d\n", element);        return element;}//置空顺序栈void SetEmpty(SEQSTACK *pS){    pS->top = -1;        return;}//遍历顺序栈bool TraStack(SEQSTACK *pS){    ElementType element;    if (IsEmpty(pS))    {        return FALSE;    }    while (pS->top > -1)    {        element = pS->array[pS->top];        pS->top--;    printf("element=%d\n", element);    }    return TRUE;}//主函数int main(void){    SEQSTACK *pS;//定义一个指向结构体变量的指针    pS = (SEQSTACK *)malloc(sizeof(SEQSTACK));    //下面函数的参数使用p和&pS是等效的    InitStack(pS);//初始化    PushStack(pS, 1);//压栈    PushStack(pS, 2);    PushStack(pS, 3);    PushStack(pS, 4);    PushStack(pS, 5);    GetTop(pS);//取栈顶元素    printf("\n");    PopStack(pS);//出栈    printf("\n");    TraStack(pS);//遍历栈    free(pS);//释放pS所占内存空间    return 0;}


 

原创粉丝点击