• 梭的顺序存储结构及C语言实现


    #include "stdio.h"
    #include "stdlib.h"
    #include "io.h"
    #include "math.h"
    #include "time.h"

    #define OK 1
    #define ERROR 0
    #define TRUE 1
    #define FALSE 0
    #define MAXSIZE 20 /* 存储空间初始分配量 */

    typedef int Status;
    typedef int SElemType; /* SElemType类型根据实际情况而定,这里假设为int */

    /* 顺序栈结构 */
    typedef struct
    {
    SElemType data[MAXSIZE];
    int top; /* 用于栈顶指针 */
    }SqStack;

    Status visit(SElemType c)
    {
    printf("%d ",c);
    return OK;
    }

    /* 构造一个空栈S */
    Status InitStack(SqStack *S)
    {
    /* S.data=(SElemType *)malloc(MAXSIZE*sizeof(SElemType)); */
    S->top=-1;
    return OK;
    }

    /* 把S置为空栈 */
    Status ClearStack(SqStack *S)
    {
    S->top=-1;
    return OK;
    }

    /* 若栈S为空栈,则返回TRUE,否则返回FALSE */
    Status StackEmpty(SqStack S)
    {
    if (S.top==-1)
    return TRUE;
    else
    return FALSE;
    }

    /* 返回S的元素个数,即栈的长度 */
    int StackLength(SqStack S)
    {
    return S.top+1;
    }

    /* 若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR */
    Status GetTop(SqStack S,SElemType *e)
    {
    if (S.top==-1)
    return ERROR;
    else
    *e=S.data[S.top];
    return OK;
    }

    /* 插入元素e为新的栈顶元素 */
    Status Push(SqStack *S,SElemType e)
    {
    if(S->top == MAXSIZE -1) /* 栈满 */
    {
    return ERROR;
    }
    S->top++; /* 栈顶指针增加一 */
    S->data[S->top]=e; /* 将新插入元素赋值给栈顶空间 */
    return OK;
    }

    /* 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR */
    Status Pop(SqStack *S,SElemType *e)
    {
    if(S->top==-1)
    return ERROR;
    *e=S->data[S->top]; /* 将要删除的栈顶元素赋值给e */
    S->top--; /* 栈顶指针减一 */
    return OK;
    }

    /* 从栈底到栈顶依次对栈中每个元素显示 */
    Status StackTraverse(SqStack S)
    {
    int i;
    i=0;
    while(i<=S.top)
    {
    visit(S.data[i++]);
    }
    printf(" ");
    return OK;
    }

    int main()
    {
    int j;
    SqStack s;
    int e;
    if(InitStack(&s)==OK)
    for(j=1;j<=10;j++)
    Push(&s,j);
    printf("栈中元素依次为:");
    StackTraverse(s);
    Pop(&s,&e);
    printf("弹出的栈顶元素 e=%d ",e);
    printf("栈空否:%d(1:空 0:否) ",StackEmpty(s));
    GetTop(s,&e);
    printf("栈顶元素 e=%d 栈的长度为%d ",e,StackLength(s));
    ClearStack(&s);
    printf("清空栈后,栈空否:%d(1:空 0:否) ",StackEmpty(s));

    return 0;
    }

  • 相关阅读:
    机械迷城MAC下载及攻略
    今晚是个难眠之夜
    div高度自适应
    代码高亮
    windows live writer
    Java连接redis的使用示例
    luogu4360 锯木厂选址 (斜率优化dp)
    poj1651 Multiplication Puzzle (区间dp)
    hdu3506 Monkey Party (区间dp+四边形不等式优化)
    poj1236/luogu2746 Network of Schools (tarjan)
  • 原文地址:https://www.cnblogs.com/nku-wangfeng/p/7630924.html
Copyright © 2020-2023  润新知