栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言--顺序栈

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言--顺序栈

2.1 栈--顺序栈
1.main.c

//
//  main.c
//  7_SqueStack
//
//  Created by ls on 2022/5/19.
//  Copyright © 2022 LSC001. All rights reserved.
//


#include "SqueStack.h"

int main() {
    SqueStack mystack;
    InitStack(&mystack);

    int select=1;
    ElemType value=0;
    while(select)
    {
        printf("********************************************n");
        printf("* [1]  push_back           [2]  pop_back   *n");
        printf("* [3]  show_Stack          [4]  stackEmpty *n");
        printf("* [5]  get_top             [6]  length     *n");
        printf("* [7]  clear               [8]  destroy    *n");
        printf("********************************************n");
        printf("请选择:> ");
        scanf("%d",&select);
        if(0 == select)
            break;
        
        switch (select)
        {
            case 1:
                printf("Please input a number(-1 end): ");
                while(scanf("%d",&value),value!= -1)
                {
                    push_back(&mystack,value);
                }
                show_Stack(&mystack);
                break;
            case 2:
                pop_back(&mystack,&value);
                show_Stack(&mystack);
                break;
            case 3:
                show_Stack(&mystack);
                break;
            case 4:
                printf("Empty: %ldn",stackEmpty(mystack));
                break;
            case 5:
                get_top(mystack);
                break;
            case 6:
                printf("length: %ldn",length(mystack));
                break;
            case 7:
                clear0(&mystack);
                break;
            case 8:
                destroy(&mystack);
                break;
            default:
                printf("输入错误!");
                break;
        }
    }
    destroy(&mystack);
    printf("Hello, World!n");
    return 0;
}

2.SqueStack.h

//
//  SqueStack.h
//  7_SqueStack
//
//  Created by ls on 2022/5/19.
//  Copyright © 2022 LSC001. All rights reserved.
//

#ifndef SqueStack_h
#define SqueStack_h

#include 
#include 
#include 

// 1 定义宏
#define MAXSTACK 5
typedef int ElemType;

// 2 定义栈

typedef struct SqueStack
{
    ElemType *base,*top;
    int stacksize;
}SqueStack;

// 3 函数声明
void InitStack(SqueStack *stack);
void push_back(SqueStack *stack,ElemType num);     // 1
void pop_back(SqueStack *stack,ElemType *num);     // 2
void show_Stack(SqueStack *stack);                 // 3
void get_top(SqueStack stack);                     // 4
long stackEmpty(SqueStack stack);                   // 5
long length(SqueStack stack);                      // 6
void clear0(SqueStack *stack);                    // 7
void destroy(SqueStack *stack);                   // 8

#endif 

3.SqueStack.c

//
//  SqueStack.c
//  7_SqueStack
//
//  Created by ls on 2022/5/19.
//  Copyright © 2022 LSC001. All rights reserved.
//

#include "SqueStack.h"

void InitStack(SqueStack *stack)
{
    stack->base = (ElemType*)malloc(MAXSTACK*sizeof(ElemType));
    assert(stack->base != NULL);
    stack->top = stack->base;
    stack->stacksize = MAXSTACK;
}
void push_back(SqueStack *stack,ElemType num)    // 1
{
    if(stack->top - stack->base == stack->stacksize) return;
    *(stack->top++) = num;
}
void pop_back(SqueStack *stack,ElemType *num)    // 2
{
    if(stack->top == stack->base ) return;
    *num = *(--(stack->top));
}
void show_Stack(SqueStack *stack)                  // 3
{
    if(stack->top - stack->base == stack->stacksize) return;
    ElemType *p= stack->base;
    while (p != stack->top) {
        printf("%d,",*p++);
    }
    printf("n");
}
long stackEmpty(SqueStack stack)                  // 4
{
    if(stack.top == stack.base )
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
void get_top(SqueStack stack)                     // 5
{
    if(! stackEmpty(stack)) printf("%dn",*(stack.top-1));
}
long length(SqueStack stack)                      // 6
{
    return stack.top - stack.base;
}
void clear0(SqueStack *stack)                    // 7
{
    stack->top = stack->base;
}
void destroy(SqueStack *stack)                   // 8
{
    free(stack->base);
    stack->top = stack->base=NULL;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/942766.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号