IT评测·应用市场-qidao123.com

标题: 栈-实现十进制转换十六进制、括号匹配 [打印本页]

作者: 莫张周刘王    时间: 6 天前
标题: 栈-实现十进制转换十六进制、括号匹配
栈-实现十进制转换十六进制、括号匹配

[code]/******************************************************   file name:sequencelist.c*   author   :zzlyx1239@126.com*   date     :2025.3.15*   brief    :顺序栈的实现*   note     :none**   Copyright (c) 2025 zzlyx1239@126.com All Right Reserved********************************************************/#include #include #include //宏定义顺序表中的数据类型typedef  int DataType_t;//定义一个顺序表布局体,声明顺序表首所在,大小,最后一个数据下标等各项参数typedef struct SequenceStack{    DataType_t    *Bottom;//声明顺序栈首所在    int            Size;//声明顺序栈大小    int            Top;//声明顺序栈最后一个元素数组下标}SeqStack_t;//创建顺序列表并举行初始化SeqStack_t* SeqStack_Creat(unsigned int size){    //1.为所有顺序表管理者申请堆内存    SeqStack_t *Manager=(SeqStack_t*)calloc(1,sizeof(Manager));    //判断是否申请成功    if(NULL==Manager)    {        perror("calloc for  Manager memory is failed!");        exit(-1);//异常退出    }    //2.为所有元素申请堆内存    Manager->Bottom=(DataType_t*)calloc(size,sizeof(DataType_t));    if(NULL==Manager->Bottom)    {        perror("calloc for Manager->Bottom is failed!");        free(Manager);        exit(-1);//异常退出    }        //3.对顺序表举行初始化    Manager->Size=size;    Manager->Top=-1;    return Manager;}//判断顺序栈是否已经满了bool SeqStack_IsFull(SeqStack_t *Manager){    return Manager->Size==Manager->Top+1?true:false;}//顺序栈进栈bool SeqStack_Push(SeqStack_t *Manager,DataType_t data){    //判断顺序表是否已经满了    if(SeqStack_IsFull(Manager))    {        printf("Sequence is Full!!!");        return false;    }    //顺序表没满,接纳尾插法插入数据    Manager->Bottom[Manager->Top+1]=data;    Manager->Top++;    return true;}//判断顺序栈是否为空bool SeqStack_IsEmpty(SeqStack_t *Manager){        return (-1==Manager->Top)?true:false;}//出栈DataType_t SeqStack_Pop(SeqStack_t *Manager){        DataType_t temp = 0;  //用于存储出栈元素的值        //1.判断顺序栈是否为空        if ( SeqStack_IsEmpty(Manager) )        {                printf("SeqStack is Empty!\n");                return;        }                //2.由于删除了一个元素,则必要让顺序栈的栈顶元素下标-1        temp = Manager->Bottom[Manager->Top--];        return temp;}//遍历顺序栈中的元素void SeqStack_Print(SeqStack_t *Manager){    for(int i=0; iTop;i++)    {        printf("Stack Element[%d]=%d\n",i,Manager->Bottom);    }}//用栈实现十进制转换成十六进制void SeqStack_Dec2Hex(SeqStack_t *Manager,unsigned int data){    int temp;    do    {        temp=data%16;//temp存储data被16取余        if(temp




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4