栈-实现十进制转换十六进制、括号匹配

打印 上一主题 下一主题

主题 979|帖子 979|积分 2937

栈-实现十进制转换十六进制、括号匹配


  • 设计一个进制转换步伐,使用顺序栈设计一个把十进制数转换为十六进制数的接口,实现当通过键盘输入一个非负的十进制数,可以在终端输出对应的十六进制数。
  • 通过键盘输入一个包括  '(' 和 ')' 的字符串string ,判断字符串是否有用。要求设计算法实现查抄字符串是否有用,有用的字符串需满足以下条件:
    A. 左括号必须用相同类型的右括号闭合。
    B. 左括号必须以精确的顺序闭合。
    C. 每个右括号都有一个对应的相同类型的左括号。

[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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莫张周刘王

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表