kyds 栈的基本功能

//第三章 栈的基本功能实现
//

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
#define ElemType int
#define MaxSize 50


// 函数声明区域
typedef struct{
    ElemType data[MaxSize];
    int top;
}Sqstack;

void InitStack(Sqstack *S);
bool IfEmpty(Sqstack *S);
bool Push(Sqstack *S,ElemType x);
bool Pop(Sqstack *S,ElemType *x);
bool GetTop(Sqstack *S, ElemType *x);
int SizeofStack(Sqstack *S);
bool tian(Sqstack *S, int n, int fanwei);
void printstack(Sqstack *S);

int main() {
    time_t t;
    srand((unsigned) time(&t)); // 初始化随机种子
    printf("开始了\n");
/////////////////////////////////////////////////////////////////////////////////////////////////////
    Sqstack *S;
    S = (Sqstack *)malloc(sizeof(Sqstack));
    InitStack(S);
    tian(S,10,100);
    printstack(S);
    printf("\n结束了\n");
    return 0;
}



void InitStack(Sqstack *S){
    S->top = -1;
}

//判空,若空,返回
bool IfEmpty(Sqstack *S){
    if (S->top == -1)
        return false;
    return true;
}


// 进栈,将x装入栈S
bool Push(Sqstack *S,ElemType x){
    if (S->top == MaxSize){
        printf("\n栈满了,将 %d 装入失败。\n",x);
        return false;
    }
    S->data[++S->top] = x;
    return true;
}

// 出栈,返回出栈的那个值
bool Pop(Sqstack *S,ElemType *x){
    if (S->top == -1){
        printf("\n出栈失败,栈为空栈,将返回false\n");
        return false;
    }
    *x = S->data[S->top--];
    return true;
}


// 读栈顶
bool GetTop(Sqstack *S, ElemType *x){
    if (S->top == -1){
        printf("\n读取栈顶失败,栈为空栈.\n");
        return false;
    }
    *x = S->data[S->top];
    return true;
}


// 栈的大小,返回一个int
int SizeofStack(Sqstack *S){
    return (S->top)+1;
}


// 给栈装入n个数,范围是0-fanwei
bool tian(Sqstack *S, int n,int fanwei){
    if (SizeofStack(S)+n >MaxSize)
        return false;
    for (int i=0; i < n ; i++){
        Push(S,rand()%fanwei);
    }
    return true;
}


// 打印栈的每一个数,从栈顶开始
void printstack(Sqstack *S){
    printf("这个栈为:栈顶");
    int i = S->top;
    while (i != -1){
        printf("%d -",S->data[i]);
        i--;
    }
    printf("栈底\n");
}
posted @ 2020-09-30 07:43  RougeBW  阅读(179)  评论(0编辑  收藏  举报